springboot+mybatis-plus设置多数据源
1.导入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
2.application.yml配置
spring:
datasource:
hikari:
connection-timeout: 6000
# 配置多数据源连接
dynamic:
# 默认使用数据源
primary: sqlserver
datasource:
# 数据源名称
pgsql:
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://localhost:15434/数据库名
username:
password:
# 数据源名称
sqlserver:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver://localhost:1433;databaseName=vtifdb
username:
password:
3.@DS()注解选择数据源
在mapper的方法上加上@DS("数据源名称")
配置事务
启动类中加上@EnableTransactional开启声明式事务
声明式事务使@DS失效
@Transactional注解导致 多数据源@DS无效 的解决方案
1.使用@DSTransactional
2.把@Transactional注解放到sql方法上
事务注解会影响多数据源设置,每个数据源方法操作放到一个单独方法里
声明式事务注解6种失效场景
编程式事务