An open API service indexing awesome lists of open source software.

https://github.com/jfaster/mango-spring-boot-starter

mango for spring boot support
https://github.com/jfaster/mango-spring-boot-starter

Last synced: 5 months ago
JSON representation

mango for spring boot support

Awesome Lists containing this project

README

          

# mango-spring-boot-starter

# 概要
Mango针对springboot提供的starter

# 例子
> * JDK 1.8 or above
> * springboot 2.x
> * 编译工具 [Maven][maven] or [Gradle][gradle]

## 添加依赖
```xml

org.jfaster
mango-spring-boot-starter
2.0.1

```

## 配置yml或者properties文件

src/main/resources/application.yml

mango:
#dao所在的基包,多个包用逗号分割
scan-package: org.jfster.mango.dao
#mango引用数据源名配置,ds1和ds2..是数据源的key,可以自定义,如果没有slave,可以不配置。
#mango中的连接池使用hikaricp,所以hikaricp中的配置在此都可以配置。
datasources:
- name: ds1
master:
driver-class-name: com.mysql.jdbc.Driver
jdbc-url: jdbc:mysql://127.0.0.1:3306/test
user-name: root
password: 272777475
maximum-pool-size: 10
connection-timeout: 3000

#slaves:
# - driver-class-name: com.mysql.jdbc.Driver
# jdbc-url: jdbc:mysql://127.0.0.1:3306/test
# user-name: root
# password: 272777475
# maximum-pool-size: 10
# connection-timeout: 3000

#如果不想使用内置的连接池,在此指定其他数据源的bean
# - ref: 其他数据源在spring中的id

#- name: ds2
# master:
# driver-class-name: com.mysql.jdbc.Driver
# jdbc-url: jdbc:mysql://127.0.0.1:3306/test
# user-name: root
# password: 272777475
# maximum-pool-size: 10
# connection-timeout: 3000
#获取mango实例工厂,默认是org.jfaster.mango.plugin.spring.DefaultMangoFactoryBean,从spring容器中获取mango实例
#默认就可以,如果有特殊需要可以指定自己的mango工厂类,继承org.jfaster.mango.plugin.spring.AbstractMangoFactoryBean实现createMango()方法
#factory-class: org.jfaster.mango.plugin.spring.DefaultMangoFactoryBean

#是否兼容空list
#compatible-with-empty-list: true

#是否检查列
#check-column: false

#是否方法参数使用真名,jdk1.8以后才支持
#use-actual-param-name: false

#批量更新是否都执行完提交事务
#use-transaction-for-batch-update: false

#缓存处理器
#cache-handler: 实现org.jfaster.mango.operator.cache.CacheHandler的缓存处理器的类路径

#是否懒加载
#lazy-init: false

#mango拦截器,实现org.jfaster.mango.interceptor.Interceptor方法,可以配置多个
#interceptors:
# - 拦截器1的类全限定型名称
# - 拦截器2的类全限定型名称
# - 拦截器2的类全限定型名称

src/main/resources/application.properties

#dao所在的基包,多个包用逗号分割
mango.scan-package=org.jfster.mango.dao

#mango引用数据源名配置,ds1和ds2..是数据源的key,可以自定义,如果没有slave,可以不配置。
#mango中的连接池使用hikaricp,所以hikaricp中的配置在此都可以配置。
mango.datasources[0].name=ds1
mango.datasources[0].master.driver-class-name=com.mysql.jdbc.Driver
mango.datasources[0].master.jdbc-url=jdbc:mysql://127.0.0.1:3306/test
mango.datasources[0].master.user-name=root
mango.datasources[0].master.password=272777475
mango.datasources[0].master.maximum-pool-size=10
mango.datasources[0].master.connection-timeout=3000

#mango.datasources[0].slaves[0].driver-class-name=com.mysql.jdbc.Driver
#mango.datasources[0].slaves[0].jdbc-url-class-name=jdbc:mysql://127.0.0.1:3306/test
#mango.datasources[0].slaves[0].user-name=root
#mango.datasources[0].slaves[0].password=272777475
#mango.datasources[0].slaves[0].maximum-pool-size=10
#mango.datasources[0].slaves[0].connection-timeout=3000

#如果不想使用内置的连接池,在此指定其他数据源的bean。
#mango.datasource[0].slaves[1].ref=其他数据源在spring中的id

#mango.datasources[1].name=ds2
#mango.datasources[1].master.driver-class-name=com.mysql.jdbc.Driver
#mango.datasources[1].master.jdbc-url-class-name=jdbc:mysql://127.0.0.1:3306/test
#mango.datasources[1].master.user-name=root
#mango.datasources[1].master.password=272777475
#mango.datasources[1].master.maximum-pool-size=10
#mango.datasources[1].master.connection-timeout=3000

#获取mango实例工厂,默认是org.jfaster.mango.plugin.spring.DefaultMangoFactoryBean,从spring容器中获取mango实例
#默认就可以,如果有特殊需要可以指定自己的mango工厂类,继承org.jfaster.mango.plugin.spring.AbstractMangoFactoryBean实现createMango()方法
#mango.factory-class=org.jfaster.mango.plugin.spring.DefaultMangoFactoryBean

#是否兼容空list
#mango.compatible-with-empty-list=true

#是否检查列
#mango.check-column=false

#是否方法参数使用真名,jdk1.8以后才支持
#mango.use-actual-param-name=false

#批量更新是否都执行完提交事务
#mango.use-transaction-for-batch-update=false

#缓存处理器
#mango.cache-handler=实现org.jfaster.mango.operator.cache.CacheHandler的缓存处理器的类路径

#是否懒加载
#mango.lazy-init=false

#mango拦截器,实现org.jfaster.mango.interceptor.Interceptor方法,可以配置多个
#mango.interceptors[0]=拦截器1的类全限定型名称
#mango.interceptors[1]=拦截器2的类全限定型名称
#mango.interceptors[2]=拦截器2的类全限定型名称

注释部分不是必须配置项,可以根据自己需要自行配置。

## 创建dao,并启动应用

1.

`src/main/java/org/jfaster/mango/pojo/User.java`

```java
package org.jfster.mango.pojo;

/**
* @author fangyanpeng.
*/
public class User {

private int id;

private String name;

private int age;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}
}

```

`src/main/java/org/jfaster/mango/dao/UserDao.java`

```java
package org.jfster.mango.dao;

import org.jfaster.mango.annotation.DB;
import org.jfaster.mango.annotation.SQL;
import org.jfster.mango.pojo.User;

import java.util.List;

/**
*
* @author fangyanpeng.
*/
@DB(table = "distinct_test", name = "ds1")
public interface UserDao {

@SQL("select id,name,age from #table")
List getAllUsers();
}

```

2.

`src/main/java/org/jfaster/mango/TestApplication.java`

```java

package org.jfster.mango;

import org.jfster.mango.dao.UserDao;
import org.jfster.mango.pojo.User;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

import java.util.List;

@SpringBootApplication
public class TestApplication {

public static void main(String[] args) {
ApplicationContext context = SpringApplication.run(TestApplication.class, args);
UserDao userDao = context.getBean(UserDao.class);
List users = userDao.getAllUsers();
for (User user : users){
System.out.println(user.getId() + "|" + user.getName() + "|" + user.getAge());
}
}
}
```