代码拉取完成,页面将自动刷新
这是一个支持单库事务的,使用AOP方式实现的,适用于 spring-boot 的动态数据源
工具,支持如下场景:
不支持双写主(这种场景很少遇见)
安装到本地
git clone git@github.com:aubdiy/spring-boot-dynamic-datasource.git
cd spring-boot-dynamic-datasource
mvn install
maven依赖引入
<dependency>
<groupId>aub.product</groupId>
<artifactId>spring-boot-dynamic-datasource</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
在 application.properties
中配置数据源,
数据源均以 spring.dynamic.datasource.
开头
spring-boot原生数据源是以 spring.datasource.
开头
spring.dynamic.datasource.${库名}.${参数}=${值}
配置主库
#配置 1 个名字为 writer 的主库数据源
#数据库类型(必填,默认:com.zaxxer.hikari.HikariDataSource)
spring.dynamic.datasource.writer.type=com.zaxxer.hikari.HikariDataSource
#数据库 URL
spring.dynamic.datasource.writer.url=jdbc:mysql://127.0.0.1:3306/spring-boot-writer?useUnicode=true&characterEncoding=utf-8
#数据库账号
spring.dynamic.datasource.writer.username=root
#数据库密码
spring.dynamic.datasource.writer.password=123
#数据库驱动
spring.dynamic.datasource.writer.driver-class-name=com.mysql.jdbc.Driver
#当前主库的包含的所有从库,如果多个,使用 ',' 分割
spring.dynamic.datasource.writer.slave=reader1,reader2
#...其他数据连接信息配置
配置从库
#配置 2 个从主库数据源:reader1, reader2
#数据库类型(必填,默认:com.zaxxer.hikari.HikariDataSource)
spring.dynamic.datasource.reader1.type=com.zaxxer.hikari.HikariDataSource
#数据库 URL
spring.dynamic.datasource.reader1.url=jdbc:mysql://127.0.0.1:3306/spring-boot-reader1?useUnicode=true&characterEncoding=utf-8
#数据库账号
spring.dynamic.datasource.reader1.username=root
#数据库密码
spring.dynamic.datasource.reader1.password=123
#数据库驱动
spring.dynamic.datasource.reader1.driver-class-name=com.mysql.jdbc.Driver
#当从库所属的主库
spring.dynamic.datasource.reader1.master=writer
#...其他数据连接信息配置
#数据库类型(必填,默认:com.zaxxer.hikari.HikariDataSource)
spring.dynamic.datasource.reader2.type=com.zaxxer.hikari.HikariDataSource
#数据库 URL
spring.dynamic.datasource.reader2.url=jdbc:mysql://127.0.0.1:3306/spring-boot-reader2?useUnicode=true&characterEncoding=utf-8
#数据库账号
spring.dynamic.datasource.reader2.username=root
#数据库密码
spring.dynamic.datasource.reader2.password=123
#数据库驱动
spring.dynamic.datasource.reader2.driver-class-name=com.mysql.jdbc.Driver
#当从库所属的主库
spring.dynamic.datasource.reader2.master=writer
#...其他数据连接信息配置
在需要操作数据库的方法上,增加 @TargetDataSource
注解,用于切换数据源
操作主库
@TargetDataSource(master = "writer")
public List<XXX> selectMaster() {
return this.sqlSessionTemplate.selectList("x.selectAll");
}
操作从库,多个从库的时候,目前只支持随机选取一个从库
@TargetDataSource(master = "writer", slavePolicy = DynamicDataSourcePolicy.RANDOM)
public List<XXX> selectMaster() {
return this.sqlSessionTemplate.selectList("x.selectAll");
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。