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

news2024/12/27 15:20:11

若依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.Driver
        druid:
            # 主库数据源
            master:
                url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
                username: root
                password: root
                driverClassName: com.mysql.cj.jdbc.Driver
            # 从库数据源
            slave:
                # 从数据源开关/默认关闭
                enabled: false
                url: 
                username: 
                password:
            dmsource:
                # 从数据源开关/默认关闭
                enabled: true
                url: jdbc:dm://192.100.198.19:5236
                username: DBDWS
                password: SYSDBA001
                driverClassName: 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 DUAL
            testWhileIdle: true
            testOnBorrow: false
            testOnReturn: false
            webStatFilter: 
                enabled: true
            statViewServlet:
                enabled: true
                # 设置白名单,不填则允许所有访问
                allow:
                url-pattern: /druid/*
                # 控制台管理用户名和密码
                login-username: ruoyi
                login-password: 123456
            filter:
                stat:
                    enabled: true
                    # 慢SQL记录
                    log-slow-sql: true
                    slow-sql-millis: 1000
                    merge-sql: true
                wall:
                    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")
    @Primary
    public 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包时,要注意了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1811977.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA开发 使用Apache PDFBox库生成PDF文件,绘制表格

1. 表格位置定点 2.执行效果展示&#xff08;截取PDF文件图片&#xff09; 3.执行代码 当我们使用Apache PDFBox库在PDF文件中创建带有表格的内容&#xff0c;需要遵循几个步骤。PDFBox本身并没有直接的API来创建表格&#xff0c;但我们可以通过定位文本、绘制线条和单元格矩形…

如何在Visual Studio Code中禁用Less文件保存时自动编译为CSS的功能

第一步&#xff1a;点击扩展&#xff0c;搜索Easy Less&#xff0c;并找到对应的扩展设置 第二步&#xff1a;点击在setting.json中编辑 第三步&#xff1a;将此段代码复制粘贴 "compress": false, // 是否压缩"sourceMap": false, // 是否生成map文件&am…

揭秘ASA归因统计的奥秘,Xinstall带您轻松上手!

在移动互联网时代&#xff0c;App推广已成为企业获取用户、提升品牌知名度的重要手段。然而&#xff0c;如何准确衡量推广效果&#xff0c;如何精准定位目标用户&#xff0c;一直是困扰着众多App运营者的难题。今天&#xff0c;我们就来谈谈ASA&#xff08;Apple Search Ads&am…

怎么监控电脑屏幕上的画面?监控电脑屏幕的优秀软件有哪些

怎么监控电脑屏幕上的画面呢&#xff1f;当然是用监控软件啦&#xff0c;它的功能超乎你的想象&#xff0c;下面我将详细介绍如何使用监控软件来监控屏幕&#xff0c;内容将包含监控软件的选择、安装、配置以及具体监控功能的实现等方面。 一、选择监控软件 在选择监控软件时&…

SonarQube安全扫描常见问题

目录 一、SonarQube质量报告 二、SonarQube扫描常见问题和修复方法 三、SonarQube质量配置 最近小编在使用SonarQube工具进行代码扫描&#xff0c;检查代码异味&#xff0c;系统漏洞等&#xff0c;实际过程中也遇到了不少问题&#xff0c;这篇文章主要列举我遇到的常见问题和…

鸿蒙开发文件管理:【@ohos.document (文件交互)】

文件交互 说明&#xff1a; 本模块首批接口从API version 6开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。本模块接口后续将废弃。不建议在OpenHarmony使用以下接口&#xff0c;调用以下接口将抛出异常。 导入模块 import document from ohos.d…

H1B签证/年薪近$6.5万|美国加州大学戴维斯分校博士后申请成功

N博士信息与通信工程专业毕业,希望到美国加州及周边地区从事博士后工作&#xff0c;且最好是H1B签证。我们为其申请到美国加州大学洛杉矶分校及戴维斯分校的职位&#xff0c;年薪为64,480美元&#xff0c;最终其选择可以办理H1B签证的加州大学戴维斯分校。 N博士背景&#xff1…

Django中配置日志

在Django中配置日志的方法非常简单&#xff0c;只需要在 setting 文件中添加配置项&#xff0c;系统会自动生成相应的日志文件&#xff0c;也可以配置调试时显示内容&#xff0c;报错发送邮件等操作。 在setting.py中添加以下配置。 # 日志配置 LOGS_DIRS os.path.join(BASE…

解决群晖NAS无法拉取docker镜像问题

一、问题描述 由于国内的docker已经被管控&#xff0c;直接在群晖NAS的docker面板上是无法直接查询到需要的docker镜像内容&#xff0c;我们需要通过SSH连接到群晖使用docker命令进行拉取镜像使用&#xff0c;如下图所示&#xff1a; 注意&#xff1a;若要通过SSH连接群晖NAS则…

【python中的转义字符】

在Python中&#xff0c;除了换行符&#xff08;\n&#xff09;和制表符&#xff08;\t&#xff09;&#xff0c;还有许多其他的转义字符和字符串格式化符号可以使用。以下是一些常见的例子&#xff1a; 1、常见的转义字符 ### 常见的转义字符 1. **换行符**: \n 2. **制表符*…

Odoo实现自动拉取gitee代码,自动升级模块

系统通过计划任务每天从指定的git仓库获取仓库tag,并存储在数据库中 系统管理员(base.group_system)每次刷新页面,在后台判断最新的tag是否已安装或已忽略来提醒是否有新的版本。 一、依赖 模块依赖python第三方包GitPython,安装方法: pip install GitPython GitP…

Camtasia Studio2024破解神器下载,轻松上手视频剪辑

嘿&#xff01;今天我要和大家分享一个神奇的软件——Camtasia Studio2024最新版的破解安装包&#xff01;&#x1f3ac; 作为一个视频制作爱好者&#xff0c;我一直在寻找一款功能强大、易于操作的视频编辑软件。而Camtasia Studio2024就是我心目中的完美选择&#xff01;它不…

二刷算法训练营Day28 | 回溯算法(4/6)

目录 详细布置&#xff1a; 1. 93. 复原 IP 地址 2. 78. 子集 3. 90. 子集 II 详细布置&#xff1a; 1. 93. 复原 IP 地址 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 . 分隔…

网络协议四

一、云中网络 物理机的劣势&#xff1a; 1&#xff09;一旦需要扩容 CPU、内存、硬盘&#xff0c;都需要去机房手动弄&#xff0c;非常麻烦 2&#xff09;采购的机器往往动不动几百 G 的内存&#xff0c;而每个应用往往可能只需要 4 核 8G 3&#xff09;一台机器&#xff0c;…

pnpm : 无法加载文件 C:\Users\xxxxx\AppData\Roaming\npm\pnpm.ps1,因为在此系统上禁止运行脚本。

vscode中执行pnpm install的时候&#xff0c;直接报了上面的错误。 解决&#xff1a; 然后输入&#xff1a;set-ExecutionPolicy RemoteSigned&#xff0c;按回车&#xff0c;然后根据提示&#xff0c;我们选A。 然后回车。 这样我们再次回到vscode中的我们就会发现可以了。 …

数字化浪潮下的制造业:WMS仓储系统功能与优势深度解析-亿发

近年来&#xff0c;国内经济增速放缓&#xff0c;中美贸易摩擦加剧&#xff0c;以及制造业产业迁移等因素&#xff0c;使得制造业面临着产能过剩和激烈竞争的局面。制造企业的仓库中常常堆积着大量原材料和积压的成品、半成品&#xff0c;这些库存占用了企业的大量流动资金&…

重点关注!2024年影响因子即将发布!

本周投稿推荐 SSCI • 中科院2区&#xff0c;6.0-7.0&#xff08;录用友好&#xff09; EI • 各领域沾边均可&#xff08;2天录用&#xff09; CNKI • 7天录用-检索&#xff08;急录友好&#xff09; SCI&EI • 4区生物医学类&#xff0c;0.5-1.0&#xff08;录用…

STM32 MDK Keil5软件调试功能使用(无需连接硬件)

MDK Keil5 在线仿真STM32&#xff08;无需连接硬件&#xff09; 首先点击工具栏的魔术棒配置一下&#xff1a;&#xff08;记得选择自己的STM32芯片类型&#xff09; 开启调试 使用逻辑分析仪查看IO输出 会打开这个界面&#xff0c;点击左边的setup按钮 会打开这个窗口&am…

洗地机是智商税吗?家用洗地机哪个牌子好?2024年多功能洗地机推荐

洗地机是智商税吗&#xff1f;肯定不是&#xff01;&#xff01;&#xff01;洗地机因为其功能集成了扫地、吸尘、拖地、烘干和消毒的功能&#xff0c;仅需一步操作即可完成所有清洁任务&#xff0c;大大的提升了人们的清洁效率&#xff0c;节省了人们清洁的时间和精力。那么&a…

Ant Design的创意之旅:设计师眼中的界面艺术

你知道什么是蚂蚁Ant Design&#xff1f;事实上&#xff0c;绝大多数人都不知道甚至没有听说过蚂蚁Ant Design&#xff0c;本文将围绕蚂蚁Ant Design是什么为大家深入分析&#xff0c;方便大家对蚂蚁Antt Design有清晰的认识。 1. 蚂蚁Ant Design是什么 蚂蚁Ant Design可以简…