SpringBoot使用@DS配置 多数据源 【mybatisplus druid datasource mysql】

项目最近需要使用多数据源,不同的mapper分别读取不同的链接,本项目使用了mybatisplus druid 来配置多数据源,基于mysql数据库。

目录

1.引入依赖

​2.配置文件 application.yaml

3.Mapper中使用@DS切换数据源

4.使用@DS的注意事项


1.引入依赖

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>3.3.6</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.6</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.32</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

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失效。

相关推荐

  1. SpringBoot基于注解形式配置数据@DS

    2023-12-18 22:52:03       32 阅读
  2. SpringBoot数据配置使用

    2023-12-18 22:52:03       12 阅读
  3. Springboot实现配置数据

    2023-12-18 22:52:03       40 阅读
  4. Springboot JPA实现数据配置

    2023-12-18 22:52:03       32 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-18 22:52:03       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-18 22:52:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-18 22:52:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-18 22:52:03       20 阅读

热门阅读

  1. SQL Server ,使用递归查询具有层级关系的数据。

    2023-12-18 22:52:03       42 阅读
  2. TypeScript入门

    2023-12-18 22:52:03       30 阅读
  3. 从app bindService分析binder客户端

    2023-12-18 22:52:03       31 阅读
  4. LeetCode 746. 使用最小花费爬楼梯

    2023-12-18 22:52:03       46 阅读