前提
您已掌握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> {
}