在
ruoyi-admin
模块的pom.xml
文件中,加入对应的依赖。
多数据源框架官方文档:dynamic-datasource 文档
ENC()
方法)。DS
注解(3.2.0+ 版本)。ServiceA >>> ServiceB >>> ServiceC
。加载顺序优先级为
方法 => 类 => 默认
。
使用 @DS
注解来切换数据源。可以将 @DS
注解加在方法或类上,方法上的注解优先级高于类上的。
注解 | 数据源切换结果 |
---|---|
无 @DS 注解 |
默认数据源 |
@DS("dsName") |
切换到 dsName 数据源或数据源组 |
示例代码:
@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");
}
}
在 application.yml
中配置多数据源信息。
# 数据源配置
spring:
datasource:
dynamic:
# 性能分析插件(开发环境可用,生产环境不建议开启)
p6spy: true
# 设置默认数据源或数据源组,默认是 master
primary: master
# 严格模式,匹配不到数据源时会报错
strict: true
datasource:
# 主库数据源
master:
type: {spring.datasource.type}
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/ruoyi-tdesign?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
username: ruoyi-tdesign
password: 123456
# 从库数据源
slave:
lazy: true
type:{spring.datasource.type}
driverClassName: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ruoyi-tdesign?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
username:
password:
支持异构数据库配置(例如:MySQL
和 Oracle
结合使用)。具体配置参考官方文档:dynamic-ds 文档
# 多主多从配置示例
spring:
datasource:
dynamic:
datasource:
master_1:
master_2:
slave_1:
slave_2:
slave_3:
# 纯粹多库配置示例(记得设置主数据源 primary)
spring:
datasource:
dynamic:
datasource:
mysql:
oracle:
sqlserver:
postgresql:
h2:
# 混合数据源配置示例
spring:
datasource:
dynamic:
datasource:
master:
slave_1:
slave_2:
oracle_1:
oracle_2:
powered by kaifamiao