• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

若依前后端分离版本配置多个数据库并使用

武飞扬头像
zora黎明
帮助1

详情请参考若依官方文档

1、ruoyi-admin模块

在application-druid.yml配置从库数据源

  1.  
    # 数据源配置
  2.  
    spring:
  3.  
    datasource:
  4.  
    type: com.alibaba.druid.pool.DruidDataSource
  5.  
    driverClassName: com.mysql.cj.jdbc.Driver
  6.  
    druid:
  7.  
    # 主库数据源
  8.  
    master:
  9.  
    url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT+8
  10.  
    username: root
  11.  
    password: root
  12.  
    # 从库数据源
  13.  
    slave:
  14.  
    # 从数据源开关/默认关闭
  15.  
    enabled: true
  16.  
    url:jdbc:mysql://localhost:3306/ms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT+8
  17.  
    username: root
  18.  
    password: root
学新通

2、ruoyi-common模块

在enums文件夹的DataSourceType类中添加数据源枚举

  1.  
    public enum DataSourceType
  2.  
    {
  3.  
    /**
  4.  
    * 主库 对应库名ry-vue
  5.  
    */
  6.  
    MASTER,
  7.  
     
  8.  
    /**
  9.  
    * 从库 对应库名ms
  10.  
    */
  11.  
    SLAVE
  12.  
    }

3、ruoyi-framework模块

在config文件夹的DruidConfig配置读取数据源

  1.  
    /**
  2.  
    * 从库 对应yml中的数据源slave ms数据库
  3.  
    * @param druidProperties
  4.  
    * @return
  5.  
    */
  6.  
    @Bean
  7.  
    @ConfigurationProperties("spring.datasource.druid.slave")
  8.  
    @ConditionalOnProperty(prefix = "spring.datasource.druid.slave", name = "enabled", havingValue = "true")
  9.  
    public DataSource slaveDataSource(DruidProperties druidProperties)
  10.  
    {
  11.  
    DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
  12.  
    return druidProperties.dataSource(dataSource);
  13.  
    }

在DruidConfig类dataSource方法添加数据源

setDataSource(targetDataSources, DataSourceType.SLAVE.name(), "slaveDataSource");

4、在需要使用多数据源方法或类上添加@DataSource注解,其中value用来表示数据源

  1.  
    @DataSource(value = DataSourceType.SLAVE)
  2.  
    public List<SysUser> selectUserList(SysUser user)
  3.  
    {
  4.  
    return userMapper.selectUserList(user);
  5.  
    }
  1.  
    @Service
  2.  
    @DataSource(value = DataSourceType.SLAVE)
  3.  
    public class SysUserServiceImpl

5、手动切换数据源

在需要切换数据源的方法中使用DynamicDataSourceContextHolder类实现手动切换,使用方法如下

  1.  
    public List<SysUser> selectUserList(SysUser user)
  2.  
    {
  3.  
    DynamicDataSourceContextHolder.setDataSourceType(DataSourceType.SLAVE.name());
  4.  
    List<SysUser> userList = userMapper.selectUserList(user);
  5.  
    DynamicDataSourceContextHolder.clearDataSourceType();
  6.  
    return userList;
  7.  
    }

二、使用多数据源 ruoyi-generator生成代码模块

在controller文件夹下的GenController控制器上 新增一个DataSource注解,指定当前控制器所有操作 都走指定的数据源SLAVE :后续生成哪个数据源的代码 只要指定对应的数据源就行,不指定 则默认主库

  1.  
    @RestController
  2.  
    @RequestMapping("/tool/gen")
  3.  
    @DataSource(value = DataSourceType.SLAVE)
  4.  
    public class GenController extends BaseController

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggfjac
系列文章
更多 icon
同类精品
更多 icon
继续加载