多数据源配置(application.properties或application.yml配置详情)

1、导入Maven依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>3.2.1</version>
    <scope>compile</scope>
</dependency>

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.18</version>
</dependency>

2、启动类配置

添加@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class)

@SpringBootApplication(exclude = DruidDataSourceAutoConfigure.class)
public class Application {
 
  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }
}

3、使用@DS注解

1、@DS 可以注解在方法上或类上,同时存在就近原则 方法上注解 优先于 类上注解。
2、不能使用事务,否则数据源不会切换,使用的还是第一次加载的数据源;

@DS("master")  

master:自己在配置中定义的数据源名称,可以放在Service层或者Repository层及具体方法里。

4、application.yml 具体配置


#############################正式环境#############################
spring:
  datasource:
    dynamic:
      primary: master  #设置默认的数据源或者数据源组,默认值即为master
      strict: false	#设置严格模式,默认false不启动. 启动后在未匹配到指定数据源时候会抛出异常,不启动则使用默认数据源.
      datasource:
        master:
          url: jdbc:oracle:thin:@x.x.x.x:1522/lkm1
          password: lkm1
          username: lkm1
          driver-class-name: oracle.jdbc.OracleDriver
        second:
          driver-class-name: oracle.jdbc.OracleDriver
          url: jdbc:oracle:thin:@x.x.x.x:1521/lkm2
          password: lkm2
          username: lkm2
        third:
          driver-class-name: oracle.jdbc.OracleDriver
          url: jdbc:oracle:thin:@x.x.x.x:1521/lkm3
          password: lkm3
          username: lkm3

5、application.properties具体配置

#正式数据库
spring.datasource.dynamic.datasource.master.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.dynamic.datasource.master.url=jdbc:mysql://x.x.x.x:3306/lkm1?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8
spring.datasource.dynamic.datasource.master.username=lkm1
spring.datasource.dynamic.datasource.master.password=lkm1

# 声明默认的主数据源(不配置的话,默认查找master标识的数据源,也可改为其他数据源标识)
spring.datasource.dynamic.primary=master

# 其他数据源(使用时需要使用`@DS("second")`注解声明使用的数据库)
spring.datasource.dynamic.datasource.second.driver-class-name=oracle.jdbc.OracleDriver
spring.datasource.dynamic.datasource.second.url=jdbc:oracle:thin:@x.x.x.x:1523/lkm
spring.datasource.dynamic.datasource.second.username=lkm2
spring.datasource.dynamic.datasource.second.password=lkm2

你可能感兴趣的:(数据库,mybatis,oracle,数据库)