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"); } }