springboot实现多数据源之间切换
第一步:引入POM
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.0</version>
</dependency>
第二步:配置yml,此处用两个mysql库配置链接举例
spring:
application:
name: yj-pms-demo
datasource:
type: com.alibaba.druid.pool.DruidDataSource
dynamic:
primary: dataSourcePri
datasource:
dataSourcePri:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://第一数据源地址:端口/数据库名称
username: 用户
password: 密码
dataSourceSec: ##此名称配合注解使用
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://第二数据源地址:端口/数据库名称
username: 用户
password: 密码
第三步:使用注解@DS(“数据库定义的名称”)
例如上面定义的第二数据源@DS(“dataSourceSec”),此注解可以使用在方法、类等多个地方,习惯常用的地方有service类上,方法上,Mapper类上
@Mapper
@DS("dataSourceSec")
public interface ISecMapper {
int searchCount();
void deleteData();
}
至此,我们在业务逻辑层调用不同的Mapper类就能动态实现数据源切换了,但是如果在同一个service方法块内切换多个数据源时,事务会失效,可以使用本地事务或者手写事务解决。