2025-08-30
技术分享
00

目录

1、引入依赖:
2、修改数据源配置 application-druid.yml
3、配置检测连接是否有效/直接注释掉(这里我选择直接注释掉)
4、如果上一步是直接注释掉的
5、增加数据源 枚举类型 DataSourceType
6、数据源读取注入 DruidConfig
7、使用:

原文链接:https://blog.csdn.net/houoyy_/article/details/138707887

1、引入依赖:
xml
<!--sql server驱动--> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>sqljdbc4</artifactId> <version>4.0</version> </dependency> <!--选择下面的--> <!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc --> <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <version>11.2.3.jre17</version> </dependency>
2、修改数据源配置 application-druid.yml
yml
# 数据源配置 spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver druid: # 主库数据源 master: url: jdbc:mysql://localhost:3306/ry-vue2?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: root # OMS数据源 oms: enabled: true driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver url: jdbc:sqlserver://192.168.xx.xx:1433;databaseName=xxxxxxx username: sa password: xxxxxxxx # # 从库数据源 # slave: # # 从数据源开关/默认关闭 # enabled: false # url: # username: # password: # 初始连接数 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
3、配置检测连接是否有效/直接注释掉(这里我选择直接注释掉)
yml
# 数据源配置 spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver druid: # 主库数据源 master: url: jdbc:mysql://localhost:3306/ry-vue2?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: root # OMS数据源 oms: enabled: true driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver url: jdbc:sqlserver://192.168.xx.xx:1433;databaseName=xxxxxxx username: sa password: xxxxxxxx # # 从库数据源 # slave: # # 从数据源开关/默认关闭 # enabled: false # url: # username: # password: # 初始连接数 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
yml
# 配置检测连接是否有效 validationQuery: SELECT 1
4、如果上一步是直接注释掉的

这里则需要找到 RuoYi-Vue\ruoyi-framework\src\main\java\com\ruoyi\framework\config\properties\DruidProperties.java 文件,然后将以下三句代码注释掉:

java
@Value("${spring.datasource.druid.validationQuery}") private String validationQuery;    /**    * 用来检测连接是否有效的sql,要求是一个查询语句,常用select 'x'。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。    */ datasource.setValidationQuery(validationQuery);
5、增加数据源 枚举类型 DataSourceType

RuoYi-Vue\ruoyi-common\src\main\java\com\ruoyi\common\enums\DataSourceType.java

java
package com.ruoyi.common.enums; ​ /** * 数据源 * * @author ruoyi */ public enum DataSourceType {    /**     * 主库     */    MASTER, ​    /**     * 从库     */    SLAVE, ​ ​    /**     * OMS数据库 SQL SERVER 数据库     */    OMS }
java
6、数据源读取注入 DruidConfig

在 RuoYi-Vue\ruoyi-framework\src\main\java\com\ruoyi\framework\config\DruidConfig.java 中将以下

两个方法进行替换:

java
@Bean    @ConfigurationProperties("spring.datasource.druid.oms")    @ConditionalOnProperty(prefix = "spring.datasource.druid.oms", name = "enabled", havingValue = "true")    public DataSource omsDataSource(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.OMS.name(), "omsDataSource");        return new DynamicDataSource(masterDataSource, targetDataSources);   }
java
7、使用:

在方法上使用:

java
 @Anonymous    @DataSource(value = DataSourceType.OMS)    @RequestMapping("getKTJl")    public List<KTJl> demoKTJl(){        return ktJlMapper.selectKTJlByUserId(Integer.valueOf("1380"));   }

在类上使用:

java
@Service @DataSource(value = DataSourceType.OMS) public class SysUserServiceImpl{ ​ }

本文作者:周得水

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!