ruoyi-vue集成多数据源(sqlserver)

1、引入依赖: ​
		<!--sql server驱动-->
        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>sqljdbc4</artifactId>
            <version>4.0</version>
        </dependency>
2、修改数据源配置 application-druid.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、配置检测连接是否有效/直接注释掉(这里我选择直接注释掉)
# 数据源配置
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

# 配置检测连接是否有效
 validationQuery: SELECT 1

4、如果上一步是直接注释掉的

这里则需要找到 RuoYi-Vue\ruoyi-framework\src\main\java\com\ruoyi

\framework\config\properties\DruidProperties.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

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

在 RuoYi-Vue\ruoyi-framework\src\main\java\com\ruoyi\framework\config\DruidConfig.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);
    }
    
 
7、使用:

在方法上使用:

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

在类上使用:

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

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

houoyy.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值