数据库客户端工具
1.3.0
开始支持,微服务不再推荐使用此工具,此工具主要适用于单个项目中存在多个数据库,微服务推荐使用mybatis-plus
数据库客户端工具是一个可以通过yml
配置,自动初始化连接池的工具,不需要重复做代码的开发。
可以同时支持多个数据库连接配置。
引入工具包
<dependency>
<groupId>com.wueasy</groupId>
<artifactId>wueasy-data-datasource</artifactId>
<version>最新版本</version>
</dependency>
数据库连接配置
datasource
:配置数据库连接集合,可以配置多个数据库连接demo
:数据源连接的key
,可以配置多个,唯一isLog
:是否输出sql日志primary
:是否主数据源,默认第一个数据源为主数据源
mybatis
:mybatis扫描的配置信息basePackage
:扫描的mapper
文件路径,多个逗号分隔mapperLocations
:xml配置文件路径,多个逗号分隔
connection
:数据库连接配置信息(连接信息参考druid
)
wueasy :
data:
datasource :
demo :
isLog: true #是否输出日志,true是,默认false
mybatis:
basePackage: com.wueasy.demo.mapper
mapperLocations: classpath*:mybatis/wueasy/demo/*.xml
connection:
url : jdbc:mysql://localhost:3306/easy_data?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&characterEncoding=utf-8
username : easyadmin
password : easyadmin
#连接池配置
initialSize : 10 #初始化大小
minIdle : 10 #最小连接
maxActive : 20 #最大连接
maxWait : 60000 #配置获取连接等待超时的时间
timeBetweenEvictionRunsMillis : 60000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
minEvictableIdleTimeMillis : 300000 #配置一个连接在池中最小生存的时间,单位是毫秒
maxEvictableIdleTimeMillis : 600000 #配置一个连接在池中最大生存的时间,单位是毫秒
validationQuery : SELECT 1
testWhileIdle : true
testOnBorrow : false
testOnReturn : false
keepAlive : true
demo2 :
mybatis:
basePackage: com.wueasy.demo2.mapper
mapperLocations: classpath*:mybatis/wueasy/demo2/*.xml
connection:
url : jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&characterEncoding=utf-8
username : easyadmin
password : easyadmin
#连接池配置
initialSize : 10 #初始化大小
minIdle : 10 #最小连接
maxActive : 20 #最大连接
maxWait : 60000 #配置获取连接等待超时的时间
timeBetweenEvictionRunsMillis : 60000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
minEvictableIdleTimeMillis : 300000 #配置一个连接在池中最小生存的时间,单位是毫秒
maxEvictableIdleTimeMillis : 600000 #配置一个连接在池中最大生存的时间,单位是毫秒
validationQuery : SELECT 1
testWhileIdle : true
testOnBorrow : false
testOnReturn : false
keepAlive : true
java中Mapper使用
通过@Autowired
注解注入即可使用。
@Autowired
private DemoMapper demoMapper;
事物支持
事务只需要在方法中增加@Transactional
注解即可
@Transactional
public void testTransaction() {
Demo demo = new Demo();
demo.setName("测试23");
demoMapper.insert(demo);
if(true) {
throw new InvokeException(-1);
}
Demo2 demo2 = new Demo2();
demo2.setName("测试3");
demo2Mapper.insert(demo2);
}
启动类配置
由于
spring boot
启动时会自动注入数据库,所以启动类中需要配置取消数据库自动注入,增加DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class,DataSourceTransactionManagerAutoConfiguration.class
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class,DataSourceTransactionManagerAutoConfiguration.class})//开启组件扫描和自动配置
读写分离数据库
3.4
版本开始支持
读写分离主要使用在分布式场景,使用多个只读数据库,一个主库,主库做新增、修改、删除操作,只读库只做查询操作,提高系统数据库并发。
特殊说明:当启用事务,所有的查询也会使用主库操作;当一个主库有多个只读数据库,那么会循环处理。
引入插件
引入通用的mybatis插件
<dependency>
<groupId>com.wueasy</groupId>
<artifactId>wueasy-data-mybatis-plugin</artifactId>
<version>最新版本</version>
</dependency>
配置信息
readonly-datasource
:配置只读数据库信息,可以配置多个只读数据库demo
:数据源连接的key
,必须和主数据库配置一致。connection
:数据库连接配置信息,可以配置多个list
(连接信息参考druid
)
wueasy:
data:
readonly-datasource:
demo:
- connection:
url : jdbc:mysql://localhost:3306/senior?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&characterEncoding=utf-8
username : easyadmin
password : easyadmin
#连接池配置
initialSize : 10 #初始化大小
minIdle : 10 #最小连接
maxActive : 20 #最大连接
maxWait : 60000 #配置获取连接等待超时的时间
timeBetweenEvictionRunsMillis : 60000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
minEvictableIdleTimeMillis : 300000 #配置一个连接在池中最小生存的时间,单位是毫秒
maxEvictableIdleTimeMillis : 600000 #配置一个连接在池中最大生存的时间,单位是毫秒
validationQuery : SELECT 1
testWhileIdle : true
testOnBorrow : false
testOnReturn : false
keepAlive : true
- connection:
url : jdbc:mysql://localhost:3306/standard?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&characterEncoding=utf-8
username : easyadmin
password : easyadmin
#连接池配置
initialSize : 10 #初始化大小
minIdle : 10 #最小连接
maxActive : 20 #最大连接
maxWait : 60000 #配置获取连接等待超时的时间
timeBetweenEvictionRunsMillis : 60000 #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
minEvictableIdleTimeMillis : 300000 #配置一个连接在池中最小生存的时间,单位是毫秒
maxEvictableIdleTimeMillis : 600000 #配置一个连接在池中最大生存的时间,单位是毫秒
validationQuery : SELECT 1
testWhileIdle : true
testOnBorrow : false
testOnReturn : false
keepAlive : true