简介 dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。
约定
本框架只做 切换数据源 这件核心的事情,并不限制你的具体操作,切换了数据源可以做任何CRUD。
配置文件所有以下划线 _ 分割的数据源 首部 即为组的名称,相同组名称的数据源会放在一个组下。
切换数据源可以是组名,也可以是具体数据源名称。组名则切换时采用负载均衡算法切换。
默认的数据源名称为 master ,你可以通过 spring.datasource.dynamic.primary 修改。
方法上的注解优先于类上注解。
强烈建议只在service的类和方法上添加注解,不建议在mapper上添加注解。
使用方法
引入dynamic-datasource-spring-boot-starter。
1 2 3 4 5 <dependency > <groupId > com.baomidou</groupId > <artifactId > dynamic-datasource-spring-boot-starter</artifactId > <version > ${version}</version > </dependency >
配置数据源。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 spring: datasource: dynamic: primary: master strict: false datasource: master: url: jdbc:mysql://xx.xx.xx.xx:3306/dynamic username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver slave_1: url: jdbc:mysql://xx.xx.xx.xx:3307/dynamic username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver slave_2: url: ENC(xxxxx) username: ENC(xxxxx) password: ENC(xxxxx) driver-class-name: com.mysql.jdbc.Driver schema: db/schema.sql data: db/data.sql continue-on-error: true separator: ";"
1 2 3 4 5 6 7 8 9 10 spring: spring: spring: datasource: datasource: datasource: dynamic: dynamic: dynamic: datasource: datasource: datasource: master_1: mysql: master: master_2: oracle: slave_1: slave_1: sqlserver: slave_2: slave_2: postgresql: oracle_1: slave_3: h2: oracle_2:
使用 @DS 注解切换数据源。@DS 可以注解在方法上或类上,同时存在就近原则 方法上注解 优先于 类上注解 。
注解
结果
没有@DS
默认数据源
@DS(“dsName”)
dsName可以为组名也可以为具体某个库的名称
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 @Service @DS("slave") public class UserServiceImpl implements UserService { @Autowired private JdbcTemplate jdbcTemplate; public List selectAll () { return jdbcTemplate.queryForList("select * from user" ); } @Override @DS("slave_1") public List selectByCondition () { return jdbcTemplate.queryForList("select * from user where age >10" ); }