Springboot配置多数据源, 并指定操作的数据源

首先导入下方依赖开启多数据源配置

<!-- 动态数据源 -->
<dependency>
     <groupId>com.baomidou</groupId>
     <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
     <version>2.5.4</version>
</dependency>

PS: 连接mysql需要导入mysql依赖 

PS: 连接sqlserver需要导入sqlserver依赖 

PS: 连接oracle需要导入oracle依赖 

(下边供上三个的依赖)

<!--  mysql依赖  -->
<dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>6.0.6</version>
</dependency>



<!--  sqlserver依赖-->
<dependency>
	 <groupId>com.microsoft.sqlserver</groupId>
	 <artifactId>sqljdbc4</artifactId>
	 <version>4.0</version>
	 <scope>runtime</scope>
</dependency>


<!-- oracle依赖 -->  
<dependency>  
    <groupId>com.oracle</groupId>  
    <artifactId>ojdbc6</artifactId>  
    <version>10.2.0.1.0</version>  
</dependency> 

 想要连上数据库光有上边的可不行,还得有数据库连接池依赖

<!--  druid连接池  -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.10</version>
</dependency>

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.18</version>
</dependency>

 yml里的多数据源配置

spring:
  servlet:
    multipart:
      enabled: true #是否启用http上传处理
      max-request-size: 100MB #最大请求文件的大小
      max-file-size: 100MB #设置单个文件最大长度
      file-size-threshold: 20MB #当文件达到多少时进行磁盘写入
  datasource:
    druid:
      stat-view-servlet:
        enabled: true
        loginUsername: admin
        loginPassword: 123456
        allow:
      web-stat-filter:
        enabled: true
    dynamic:
      druid: # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置)
        # 连接池的配置信息
        # 初始化大小,最小,最大
        initial-size: 5
        min-idle: 5
        maxActive: 20
        # 配置获取连接等待超时的时间
        maxWait: 60000
        # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
        timeBetweenEvictionRunsMillis: 60000
        # 配置一个连接在池中最小生存的时间,单位是毫秒
        minEvictableIdleTimeMillis: 300000
        testWhileIdle: true
        testOnBorrow: false
        testOnReturn: false
        #validationQuery: SELECT 1
        # 打开PSCache,并且指定每个连接上PSCache的大小
        poolPreparedStatements: true
        maxPoolPreparedStatementPerConnectionSize: 20
        # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
        filters: stat,slf4j
        # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
        connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
      datasource:
        master: #可以理解为数据源名称
          url: jdbc:mysql://ip:端口/数据库?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&allowMultiQueries=true&serverTimezone=Asia/Shanghai
          username: 账号
          password: 密码
          driver-class-name: com.mysql.jdbc.Driver
        # 多数据源配置 sqlServer
        sqlserver:
          url: jdbc:sqlserver://ip:端口;SelectMethod=cursor;DatabaseName=数据库
          username: 账号
          password: 密码
          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
        # 多数据源配置
        oracle:
          url: jdbc:oracle:thin:@IP:端口:数据库
          username: 账号
          password: 密码
          driver-class-name: oracle.jdbc.driver.OracleDriver
          validationQuery: SELECT 1 FROM DUAL

下边将介绍如何使用

其实就是一个核心的注解 @DS

PS: 这个注解是最上边动态数据源依赖提供的注解


package com.baomidou.dynamic.datasource.annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DS {
    String value();
}

通过他的源码可以看出来 他能作用到方法  接口 和 类上

用法  @DS("数据源名称")

作用到方法上代表该方法所操作的数据源是指定数据源(例子如下)

  @DS("sqlserver")
  List<PoRdrecordVO> getU8One(@Param("id") String id);
//那么我这个mapper操作的数据源就是@DS()内的指定数据源 mapper层对应的xml内不需要指定数据源

作用到类和接口上则表示类和接口内的所有方法操作的数据源都为该数据源

PS:   类和方法上的注解加载顺讯为类和接口-->方法 也就是说 当方法和类上都有注解的时候 以方法上的为准

PS:  不写的时候默认使用master数据源

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值