开发喵星球

RuoYi-Vue-Plus多数据源功能(327)

依赖添加

ruoyi-admin 模块的 pom.xml 文件中,加入对应的依赖。

添加依赖

多数据源框架概述

多数据源框架官方文档:dynamic-datasource 文档

使用说明

加载顺序优先级为 方法 => 类 => 默认

使用 @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:

异构数据库配置示例

支持异构数据库配置(例如:MySQLOracle 结合使用)。具体配置参考官方文档: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:
   
分类:Java/OOP 作者:无限繁荣, 吴蓉 发表于:2024-09-10 15:43:32 阅读量:133
<<   >>


powered by kaifamiao