当前位置: 首页 > news >正文

若依微服务中配置 MySQL + DM 多数据源

文章目录

  • 1、导入 MySQL 和达梦(DM)依赖
  • 2、在 application-druid.yml 中配置达梦(DM)数据源
  • 3、在 DruidConfig 类中配置多数据源信息
  • 4、在 Service 层或方法级别切换数据源
    • 4.1 在 Service 类上切换到从库数据源
    • 4.2 在方法级别切换数据源

本文将详细说明如何在若依(RuoYi)微服务架构中集成 MySQL 和达梦(DM)数据库,实现多数据源配置。通过配置多个数据源,可以灵活管理数据库资源,满足不同的数据存储需求。

1、导入 MySQL 和达梦(DM)依赖

首先,在项目的 pom.xml 文件中添加 MySQL 和达梦数据库的驱动依赖,以便项目能够连接这两个数据库。

<!-- MySQL 驱动包 -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId>
</dependency><!-- 达梦 (DM) 驱动包 -->
<dependency><groupId>com.dameng</groupId><artifactId>Dm7JdbcDriver18</artifactId><version>7.6.0.165</version>
</dependency>

添加上述依赖后,项目可以支持 MySQL 和达梦(DM)数据库连接。

2、在 application-druid.yml 中配置达梦(DM)数据源

application-druid.yml 文件中配置主数据源和从数据源,分别指定 MySQL 和达梦数据库连接信息。此配置示例如下:

spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedruid:# 主库数据源配置(MySQL)master:url: jdbc:mysql://localhost:3306/yourdbusername: yourusernamepassword: yourpassworddriverClassName: com.mysql.cj.jdbc.Driver# 从库数据源配置(达梦 DM)slave:enabled: true  # 启用达梦数据源url: jdbc:dm://localhost:5236/yourdbusername: yourusernamepassword: yourpassworddriverClassName: dm.jdbc.driver.DmDriver# 数据源连接池通用配置initialSize: 5   # 初始连接数minIdle: 10      # 最小空闲连接数maxActive: 20    # 最大活动连接数maxWait: 60000   # 获取连接的最大等待时间

通过以上配置,MySQL 数据源被设为主数据源(master),而达梦(DM)被设为从数据源(slave)。在从库数据源中,将 enabled 设置为 true 以启用该数据源。

3、在 DruidConfig 类中配置多数据源信息

DruidConfig 类中定义多数据源的配置信息,使应用能够识别并使用配置的 MySQL 和达梦数据库。以下为 DruidConfig 的配置代码示例:

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;@Configuration
public class DruidConfig {@Bean@ConfigurationProperties("spring.datasource.druid.master")public DataSource masterDataSource(DruidProperties druidProperties) {DruidDataSource dataSource = DruidDataSourceBuilder.create().build();return druidProperties.dataSource(dataSource);}@Bean@ConfigurationProperties("spring.datasource.druid.slave")@ConditionalOnProperty(prefix = "spring.datasource.druid.slave", name = "enabled", havingValue = "true")public DataSource slaveDataSource(DruidProperties druidProperties) {DruidDataSource dataSource = DruidDataSourceBuilder.create().build();return druidProperties.dataSource(dataSource);}
}

DruidConfig 中,我们定义了 masterDataSourceslaveDataSource。其中 @ConditionalOnProperty 注解确保从库(slave)在配置 enabledtrue 时才启用。通过这种方式,可以轻松启用或禁用从库数据源。

4、在 Service 层或方法级别切换数据源

通过 @DataSource 注解,可以在 Service 层或具体方法上灵活地切换数据源。若不指定数据源,系统默认会使用主数据源(MySQL)。

4.1 在 Service 类上切换到从库数据源

在整个 Service 类上添加 @DataSource 注解,以指定默认使用从库(达梦)数据源:

@Service
@DataSource(value = DataSourceType.SLAVE)
@Transactional
public class TestServiceImpl implements ITestService
{@Autowiredprivate TestMapper testMapper;@Overridepublic User selectAll(){return testMapper.selectAll();}
}

此示例中,@DataSource(value = DataSourceType.SLAVE) 指定 TestServiceImpl 使用达梦数据库作为默认数据源。

4.2 在方法级别切换数据源

如果仅希望特定方法使用从库数据源,可以在方法上添加 @DataSource 注解,而类级别默认数据源依然为主库。

@Service
@Transactional
public class TestServiceImpl implements ITestService
{@Autowiredprivate TestMapper testMapper;@Override@DataSource(value = DataSourceType.SLAVE)public User selectAll(){return testMapper.selectAll();}
}

在这种情况下,selectAll 方法使用达梦(DM)从库数据源,其余方法则默认使用主库 MySQL 数据源。

通过上述配置,若依项目即可支持 MySQL 和达梦(DM)多数据源的灵活切换。如果未能成功切换数据源,请仔细检查每一步配置,并确保所需依赖项和配置文件正确无误。

http://www.lryc.cn/news/501814.html

相关文章:

  • 一些前端组件介绍
  • python学opencv|读取图像(九)用numpy创建黑白相间灰度图
  • AtCoder Beginner Contest 383
  • 20. 内置模块
  • 《知识拓展 · 统一建模语言UML》
  • 计算机网络-Wireshark探索ARP
  • 减少30%人工处理时间,AI OCR与表格识别助力医疗化验单快速处理
  • 1.2.3计算机软件
  • 二、uni-forms
  • Android13开机向导
  • 软件测试丨Appium 源码分析与定制
  • 1.网络知识-IP与子网掩码的关系及计算实例
  • Android中Gradle常用配置
  • Linux操作系统3-文件与IO操作2(文件描述符fd与文件重定向)
  • k8s调度策略
  • uniapp中父组件传参到子组件页面渲染不生效问题处理实战记录
  • 螺丝螺帽缺陷检测识别数据集,支持yolo,coco,voc三种格式的标记,一共3081张图片
  • 一个简单带颜色的Map
  • kubeadm安装K8s集群之基础环境配置
  • 前端实现在线预览excel文件
  • 关于idea-Java-servlet-Tomcat-Web开发中出现404NOT FOUND问题的解决
  • SCRM私域流量管理工具助力企业微信电商转型升级
  • 三相异步电动机为什么能够旋转?
  • 优化移动端H5:常见问题与解决方案
  • TM1不藏私系列——#10. TM1快速运算的秘密武器-Feeder
  • 【Python】【Conda 】Conda vs venv:Python开发者的虚拟环境选择指南
  • 【从0学英语】06.时态 - 一般过去时
  • 获取cpu序列号-python实现
  • 文献分享: PLAID——为ColBERT架构设计的后期交互驱动器
  • IMX6ULL开发板、PC机上的USB网卡、VMware中的Ubuntu的桥接网卡三者互Ping设置及设置