Mybatis-plus 多数源配置

前提

您已掌握mybatis-plus单数据源的使用,不会的前移步上一篇“Mybatis-plus简单使用”

一、依赖

    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
        <version>3.5.1</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.2.8</version>
    </dependency>

依赖说明,mybatis plus 数据源连接默认采用druid连接,不存在的时候按以下顺序优先选择
Druid > HikariCp > BeeCp > DBCP2 > Spring Basic
我们一般都采用Druid

对于druid依赖,是选用druid还是选用druid-spring-boot-starter,前者是需要自行配置启动的,而后者是官方配置好的,初学用后者,深入了解配置可以采用前者。

二、配置

spring:
  datasource:
    dynamic:
      primary: db_first #设置默认的数据源或者数据源组
      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
      datasource:
        db_first:
          url: jdbc:mysql://127.0.0.1:3306/mybatis_one?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver # 3.2.0开始支持SPI可省略此配置
          #type:com.alibaba.druid.pool.DruidDataSource #使用Druid连接池 默认不写,所以db_second也同样使用了Druid连接池
        db_second:
          url: jdbc:mysql://127.0.0.1:3306/mybatis_two?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver

三、生成工具类

主要不同的配置如下

        //实体类存放包名
        String pkgEntity = "model.db_first";
        //mapper类存放包名
        String pkgMapper = "mapper.db_first";
        //实体类存放包名
        String pkgEntity = "model.db_scend";
        //mapper类存放包名
        String pkgMapper = "mapper.db_scend";

四、不同对象区分不同数据库

官方建议是在service层定义,而我更看重它的是不需要把service层直接写出。所以我把区分放在了mapper层

@DS("db_second") //默认数据库连接可以不注解
public interface OrderMapper extends BaseMapper<Order> {

}