springboot+dynamic多数据源配置
来源:https://mp.baomidou.com/guide/dynamic-datasource.htmlhtml
dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。mysql
配置
- pom
<dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>${version}</version> </dependency>
- 配置数据源。
spring: datasource: dynamic: primary: master #设置默认的数据源或者数据源组,默认值即为master datasource: master: username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://xx.xx.xx.xx:3306/dynamic slave_1: username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://xx.xx.xx.xx:3307/dynamic slave_2: username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://xx.xx.xx.xx:3308/dynamic #......省略 #以上会配置一个默认库master,一个组slave下有两个子库slave_1,slave_2
使用
使用@DS
切换数据源。
@DS
能够注解在方法上和类上,同时存在方法注解优先于类上注解。spring
注解 | 结果 |
---|---|
没有@DS | 默认数据源 |
@DS("dsName") | dsName能够为组名也能够为具体某个库的名称 |
@Service @DS("slave") public class UserServiceImpl implements UserService { @Autowired private JdbcTemplate jdbcTemplate; public List<Map<String, Object>> selectAll() { return jdbcTemplate.queryForList("select * from user"); } @Override @DS("slave_1") public List<Map<String, Object>> selectByCondition() { return jdbcTemplate.queryForList("select * from user where age >10"); } }