SpringBoot使用@DS配置 多数据源 【mybatisplus druid datasource mysql】
•
数据库
项目最近需要使用多数据源,不同的mapper分别读取不同的链接,本项目使用了mybatisplus druid 来配置多数据源,基于mysql数据库。
目录
1.引入依赖
2.配置文件 application.yaml
3.Mapper中使用@DS切换数据源
4.使用@DS的注意事项
1.引入依赖
com.baomidou
dynamic-datasource-spring-boot-starter
3.3.6
com.baomidou
mybatis-plus-boot-starter
3.5.1
com.alibaba
druid-spring-boot-starter
1.2.6
mysql
mysql-connector-java
8.0.32
org.springframework.boot
spring-boot-starter-jdbc
2.配置文件 application.yaml
spring:
# 配置数据源信息
datasource:
dynamic:
# 设置默认的数据源或者数据源组
primary: master
# 严格匹配数据源,默认false,true未匹配到指定数据源时抛异常,false使用默认数据源
strict: false
datasource:
master:
url: jdbc:mysql://localhost:3306/master?serverTimezone=GMT%2B8&characterEncoding=utf-8&userSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: root
slave:
url: jdbc:mysql://localhost:3307/slave?serverTimezone=GMT%2B8&characterEncoding=utf-8&userSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: root
3.Mapper中使用@DS切换数据源
import com.baomidou.dynamic.datasource.annotation.DS;
import com.gzmpc.print.entity.Template;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface TestMapper {
@DS("master")
public List getMaster(String parm);
@DS("slave")
public List getSlave(String parm);
}
@DS也可在mapper层、service层使用,默认的master可以不用加@DS
4.使用@DS的注意事项
在事务方法内调用@DS注解的方法,@DS注解同样不生效,原因是spring只能拦截到最外层方法的@Transactional注解,此时加载该事务的数据源,在事务方法内即使调用了@DS注解的方法,获取的是外层事务的数据源,导致@DS失效。
本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/d1c6c89a47.html
