SpringBoot 多数据源

211 阅读1分钟

SpringBoot 多数据源

springboot mybatis plus mysql

项目示例:gitee.com/TheOldMan/s…

数据库

创建两个数据库:master01 marter02

create table master01.user
(
  id   int auto_increment
  primary key,
  name varchar(20) null
);
create table master02.sys
(
    id   int auto_increment
        primary key,
    name varchar(20) null
);

项目的依赖展示

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  
  <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.1</version>
  </dependency>
  
  <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.5.1</version>
  </dependency>
  
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
  </dependency>
  
  <!--  这个实现动态切换的 参考链接 https://baomidou.com/pages/a61e1b/#文档-documentation   -->
  <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
    <version>3.5.1</version>
  </dependency>
  
  
  
  
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
  </dependency>
  <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
  </dependency>
</dependencies>

项目配置展示

spring:
  ##数据库连接信息
  datasource:
    dynamic:
      primary: master
      strict: false
      datasource:
        master:
          url: jdbc:mysql://xxx:3306/master01?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
          username: root
          password: 25b4ddaea181d48d
          driver-class-name: com.mysql.cj.jdbc.Driver
        slave_1:
          url: jdbc:mysql://xxx:3306/master02?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
          username: root
          password: 25b4ddaea181d48d
          driver-class-name: com.mysql.cj.jdbc.Driver

@DS 切换数据源

@DS 可以注解在方法上或类上,同时存在就近原则 方法上注解 优先于 类上注解。

注解结果
没有@DS默认数据源
@DS("dsName")dsName可以为组名也可以为具体某个库的名称

数据源默认是 master. ISysService 第二个库,可以利用这个注解切换数据源。 

项目演示

这个看起来是非常的方便啊