druid链接不同数据源


使用若依后台管理,集成自主业务,后台管理库是mysql,业务库是sqlserver;具体配置如下;

1.pom 加入sqlserver配置

1 <dependency>
2             <groupId>com.microsoft.sqlservergroupId>
3             <artifactId>sqljdbc4artifactId>
4             <version>4.0version>
5         dependency>

2.application-druid.yml配置

*注意链接不同数据库使用不同驱动

# 数据源配置
spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        druid:
            # 主库数据源
            master:
                url: jdbc:mysql://localhost:3306/ry?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true
                username: root
                password: wuhailong123
                driverClassName: com.mysql.jdbc.Driver
            # 从库数据源
            slave:
                # 从数据源开关/默认关闭
                enabled: true
                url: jdbc:sqlserver://192.168.2.11\HJCDR;DatabaseName=HJ.DEV.PDP.TEST
                username: sa
                password: rjgcb2.60
                driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
            # 初始连接数
            initial-size: 10
            # 最大连接池数量
            max-active: 100
            # 最小连接池数量
            min-idle: 10
            # 配置获取连接等待超时的时间
            max-wait: 60000
            # 打开PSCache,并且指定每个连接上PSCache的大小
            pool-prepared-statements: true
            max-pool-prepared-statement-per-connection-size: 20
            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
            timeBetweenEvictionRunsMillis: 60000
            # 配置一个连接在池中最小生存的时间,单位是毫秒
            min-evictable-idle-time-millis: 300000
            validation-query: SELECT 1 FROM DUAL
            test-while-idle: true
            test-on-borrow: false
            test-on-return: false
            stat-view-servlet:
                enabled: true
                url-pattern: /monitor/druid/*
            filter:
                stat:
                    log-slow-sql: true
                    slow-sql-millis: 1000
                    merge-sql: false
                wall:
                    config:
                        multi-statement-allow: true

3.业务代码中切换不同数据源

1  @Override
2     public List<Project> findAll() {
3         DynamicDataSourceContextHolder.setDateSoureType("SLAVE");
4         return projectMapper.selectProjectList(null);
5     }