若依RuoYi-Vue分离版—配置多数据源

2024-06-11 20:04

本文主要是介绍若依RuoYi-Vue分离版—配置多数据源,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

若依RuoYi-Vue分离版—配置多数据源

  • 一、修改application-druid.yml
  • 二、修改pom文件,引入依赖
    • 第一种:下载jar包到本地,然后引入(我这边用的是这种)
      • 本地引入的,打包时需要加上配置
    • 第二种:从远程maven仓库引入
  • 三、修改多数据源配置类,新增从数据库配置
    • 3.1 修改 多数据源枚举
    • 3.2 修改 多数据源配置类
  • 如何切换使用

记录一下使用若依框架配置多数据库时踩到的坑,主数据库是mysql,从数据库是dm

一、修改application-druid.yml

在这里插入图片描述

# 数据源配置
spring:datasource:type: com.alibaba.druid.pool.DruidDataSource# 多数据源需要注释下面这行配置 这行配置表示直接指定mysql的驱动#driverClassName: com.mysql.cj.jdbc.Driverdruid:# 主库数据源master:url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8username: rootpassword: rootdriverClassName: com.mysql.cj.jdbc.Driver# 从库数据源slave:# 从数据源开关/默认关闭enabled: falseurl: username: password:dmsource:# 从数据源开关/默认关闭enabled: trueurl: jdbc:dm://192.100.198.19:5236username: DBDWSpassword: SYSDBA001driverClassName: dm.jdbc.driver.DmDriver# 初始连接数initialSize: 5# 最小连接池数量minIdle: 10# 最大连接池数量maxActive: 20# 配置获取连接等待超时的时间maxWait: 60000# 配置连接超时时间connectTimeout: 30000# 配置网络超时时间socketTimeout: 60000# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒timeBetweenEvictionRunsMillis: 60000# 配置一个连接在池中最小生存的时间,单位是毫秒minEvictableIdleTimeMillis: 300000# 配置一个连接在池中最大生存的时间,单位是毫秒maxEvictableIdleTimeMillis: 900000# 配置检测连接是否有效validationQuery: SELECT 1 FROM DUALtestWhileIdle: truetestOnBorrow: falsetestOnReturn: falsewebStatFilter: enabled: truestatViewServlet:enabled: true# 设置白名单,不填则允许所有访问allow:url-pattern: /druid/*# 控制台管理用户名和密码login-username: ruoyilogin-password: 123456filter:stat:enabled: true# 慢SQL记录log-slow-sql: trueslow-sql-millis: 1000merge-sql: truewall:config:multi-statement-allow: true

二、修改pom文件,引入依赖

在这里插入图片描述

引入数据库驱动包有两种方式

第一种:下载jar包到本地,然后引入(我这边用的是这种)

对于关系为
DmJdbcDriver16 => Jdk1.6,
DmJdbcDriver17 => Jdk1.7,
DmJdbcDriver18 => Jdk1.8。

在这里插入图片描述

<!-- 达梦数据库驱动 project.basedir表示项目根路径-->
<dependency><groupId>com.dm</groupId><artifactId>DmJdbcDriver18</artifactId><version>1.8</version><scope>system</scope><systemPath>${project.basedir}/src/main/resources/lib/DmJdbcDriver18.jar</systemPath>
</dependency>

${project.basedir} 是一个 Maven 属性,它会被解析为项目的根目录的绝对路径。这通常用于在 Maven 插件配置中引用文件或目录。

本地引入的,打包时需要加上配置

在根目录下 pom.xml 文件中,添加:
在这里插入图片描述

<!-- 打包外部jar -->
<plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!--设置为true,以便把本地的system的jar也包括进来--><includeSystemScope>true</includeSystemScope></configuration>
</plugin>

第二种:从远程maven仓库引入

    <!--https://mvnrepository.com/artifact/com.dameng/DmJdbcDriver18 --><dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver18</artifactId><version>8.1.2.192</version></dependency>

三、修改多数据源配置类,新增从数据库配置

3.1 修改 多数据源枚举

在这里插入图片描述

package com.ruoyi.common.enums;/*** 数据源* * @author ruoyi*/
public enum DataSourceType
{/*** 主库*/MASTER,/*** 从库*/SLAVE,/***达梦库*/DMSOURCE
}

3.2 修改 多数据源配置类

在这里插入图片描述

@Bean@ConfigurationProperties("spring.datasource.druid.dmsource")@ConditionalOnProperty(prefix = "spring.datasource.druid.dmsource", name = "enabled", havingValue = "true")public DataSource dmsourceDataSource(DruidProperties druidProperties){DruidDataSource dataSource = DruidDataSourceBuilder.create().build();return druidProperties.dataSource(dataSource);}@Bean(name = "dynamicDataSource")@Primarypublic DynamicDataSource dataSource(DataSource masterDataSource){Map<Object, Object> targetDataSources = new HashMap<>();targetDataSources.put(DataSourceType.MASTER.name(), masterDataSource);setDataSource(targetDataSources, DataSourceType.SLAVE.name(), "slaveDataSource");setDataSource(targetDataSources, DataSourceType.DMSOURCE.name(), "dmsourceDataSource");//从以下可看出第一个参数为指定默认数据源(此处为:master),第二个参数为多数据源return new DynamicDataSource(masterDataSource, targetDataSources);}

如何切换使用

使用多数据源
service方法 或 service类
mapper方法 或 mapper类上 或 mapper接口上
添加@DataSource注解,其中value用来表示数据源。
只需要在其中一处加即可,只给mapper或者只给service加

例如:
在这里插入图片描述

参考文章
【1】若依框架 spring boot+ mybatis + 多数据库配置(mysql+oracle)
【2】若依@v3.8.6前后端分离版集成达梦数据库(DM8)
【3】通过<scope>system</scope>依赖本地jar包时,要注意了!

这篇关于若依RuoYi-Vue分离版—配置多数据源的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1052152

相关文章

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

springboot将lib和jar分离的操作方法

《springboot将lib和jar分离的操作方法》本文介绍了如何通过优化pom.xml配置来减小SpringBoot项目的jar包大小,主要通过使用spring-boot-maven-plugin... 遇到一个问题,就是每次maven package或者maven install后target中的ja

SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤

《SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤》本文主要介绍了SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤,文中通过示例代码介绍的非常详... 目录 目标 步骤 1:确保 ProxySQL 和 mysql 主从同步已正确配置ProxySQL 的

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

CSS弹性布局常用设置方式

《CSS弹性布局常用设置方式》文章总结了CSS布局与样式的常用属性和技巧,包括视口单位、弹性盒子布局、浮动元素、背景和边框样式、文本和阴影效果、溢出隐藏、定位以及背景渐变等,通过这些技巧,可以实现复杂... 一、单位元素vm 1vm 为视口的1%vh 视口高的1%vmin 参照长边vmax 参照长边re

配置springboot项目动静分离打包分离lib方式

《配置springboot项目动静分离打包分离lib方式》本文介绍了如何将SpringBoot工程中的静态资源和配置文件分离出来,以减少jar包大小,方便修改配置文件,通过在jar包同级目录创建co... 目录前言1、分离配置文件原理2、pom文件配置3、使用package命令打包4、总结前言默认情况下,

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

css渐变色背景|<gradient示例详解

《css渐变色背景|<gradient示例详解》CSS渐变是一种从一种颜色平滑过渡到另一种颜色的效果,可以作为元素的背景,它包括线性渐变、径向渐变和锥形渐变,本文介绍css渐变色背景|<gradien... 使用渐变色作为背景可以直接将渐China编程变色用作元素的背景,可以看做是一种特殊的背景图片。(是作为背