Spring+mybatisplus 多数据源

本文案例为 sql server,其他数据源切换为相应的驱动即可。

依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.5</version>
<exclusions>
<exclusion>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>4.3.0</version>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<scope>runtime</scope>
</dependency>

配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# mybatis
mybatis-plus:
mapper-locations: classpath:/mapper/*.xml

spring.datasource:
dynamic:
primary: db1
datasource:
db1:
url: jdbc:sqlserver://****;
username: ****
password: ****
db2:
url: jdbc:sqlserver://****;
username: ****
password: ****

代码

xml 文件省略,保持和 mybatis 一样即可,代码使用上只用在 Mapper 或者 DAO 文件上使用@DS声明即可。

1
2
3
4
5
6
@Mapper
@DS("db2")
public interface BehaviorEmailDao extends BaseMapper<BehaviorEmail> {

Set<String> getSendRecordByDate(@Param("lastDate") String lastDate);
}

默认主库为 db1,因此操作 db1 的接口可不用声明。