如果想在项目中使用多个数据源,先在yml配置文件中,添加新的数据库连接信息
master是主数据库,正常都是用这个数据源
spring:
datasource:
dynamic:
# 配置默认数据源
primary: master
strict: true
datasource:
## 主数据库master
master:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://.....
username: .....
password: .....
## 新1
slave_1:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://.....
username: .....
password: .....
## 新2
slave_2:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver://.....
username: .....
password: .....
可以定义一个类存数据源名称信息
public class DataConstants {
// 数据库
public static final String SLAVE_1 = "slave_1";
public static final String SLAVE_2 = "slave_2";
}
添加注解使用其他数据源
正常不添加任何注解,是连接不到其他数据源的,想要使用其他数据源,需要使用注解来支持多数据源切换
添加==@DS(datasource数据源的名称)==注解 (Service层)
@Override
@DS(DataConstants.SLAVE_2)
public A getById(String id) {
return AMapper.getById(id);
}
事务回滚
想在使用其他数据源的情况下做事务回滚操作,不能再使用@Transactional,要使用==@DSTransactional== (Service层)
@Override
@DSTransactional
public B getById(String id) {
return BMapper.getById(id);
}