1、增加依赖
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.2.0</version>
</dependency>
<dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.1.0</version>
</dependency>
<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.9</version>
</dependency>
2、配置数据源
spring:datasource:dynamic:primary: db1datasource:db1:url: jdbc:oracle:thin:@xxx.xxx.xxx.xxx:1521:ORCLusername: XXXXXXpassword: xxxxdriver-class-name: oracle.jdbc.OracleDriverdruid:initial-size: 3max-active: 8min-idle: 2max-wait: -1min-evictable-idle-time-millis: 30000max-evictable-idle-time-millis: 30000time-between-eviction-runs-millis: 0validation-query: select 1 from dualvalidation-query-timeout: -1test-on-borrow: falsetest-on-return: falsetest-while-idle: truepool-prepared-statements: truefilters: stat,wallshare-prepared-statements: truedb2:url: jdbc:sqlserver://xxx.xxx.xxx.xxx:1433;DatabaseName=XXXXusername: XXpassword: xxxxxxxxdriver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriverdruid:initial-size: 3max-active: 8min-idle: 2max-wait: -1min-evictable-idle-time-millis: 30000max-evictable-idle-time-millis: 30000time-between-eviction-runs-millis: 0validation-query: select 1validation-query-timeout: -1test-on-borrow: falsetest-on-return: falsetest-while-idle: truepool-prepared-statements: truefilters: stat,wallshare-prepared-statements: truedb3:username: xxxxpassword: xxxxdriver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://xxx.xxx.xxx.xxx:3306/xxx?characterEncoding=utf8&useSSL=falsedruid:initial-size: 3max-active: 8min-idle: 2max-wait: -1min-evictable-idle-time-millis: 30000max-evictable-idle-time-millis: 30000time-between-eviction-runs-millis: 0validation-query: select 1validation-query-timeout: -1test-on-borrow: falsetest-on-return: falsetest-while-idle: truepool-prepared-statements: truefilters: stat,wallshare-prepared-statements: true
3、排除原生Druid的快速配置类
@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class)
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}}
4、切换数据源
使用 @DS 注解切换数据源。可以注解在方法上,可以注解在service实现或mapper接口方法上。
注解 | 结果 |
没有@DS | 主库 |
@DS("db1") | 存在即db1,不存在即主库 |
@Service
//@DS("db1")
public class UserServiceImpl implements UserService {@Autowiredprivate JdbcTemplate jdbcTemplate;@DS("db1")public List<Map<String, Object>> selectAll() {return jdbcTemplate.queryForList("select * from user");}@Override@DS("db2")public List<Map<String, Object>> selectByCondition() {return jdbcTemplate.queryForList("select * from user where age >10");}}