当前位置: 首页 > news >正文

SpringBoot3+Druid+MybatisPlus多数据源支持,通过@DS注解配置Service/Mapper/Entity使用什么数据源

在 Spring Boot 3 中结合 Druid 和 MyBatis-Plus 实现多数据源支持,并通过 @DS 注解动态切换数据源,可以按照以下步骤进行配置:

官方文档:多数据源支持 | MyBatis-Plus

1. 引入依赖

pom.xml 中添加以下依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>dynamic-datasource-spring-boot3-starter</artifactId>
    <version>3.5.0</version> <!-- 请根据实际情况选择版本 -->
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.4</version>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.2</version>
</dependency>

2. 配置数据源

application.ymlapplication.properties 文件中配置多个数据源:

yaml复制

spring:
  datasource:
    dynamic:
      primary: master  # 默认数据源
      strict: false    # 是否严格匹配数据源
      datasource:
        master:  # 主数据源
          url: jdbc:mysql://localhost:3306/master?useSSL=false&serverTimezone=UTC
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver
        slave:  # 从数据源
          url: jdbc:mysql://localhost:3306/slave?useSSL=false&serverTimezone=UTC
          username: root
          password: root
          driver-class-name: com.mysql.cj.jdbc.Driver

3. 使用 @DS 注解切换数据源

@DS 注解可以放在类上或方法上,方法上的注解优先于类上的注解。

示例 1:在 Mapper 接口上使用 @DS 注解
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.dynamic.datasource.annotation.DS;

@DS("slave")  // 指定使用从数据源
public interface UserMapper extends BaseMapper<User> {
    // Mapper 方法
}
示例 2:在 Service 方法上使用 @DS 注解
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.dynamic.datasource.annotation.DS;

@Service
public class UserService extends ServiceImpl<UserMapper, User> {
    @DS("slave")  // 指定方法使用从数据源
    public User getUserById(Long id) {
        return this.getById(id);
    }
}

4. 注意事项

  • 如果没有使用 @DS 注解,则默认使用主数据源。(primary: master  # 默认数据源)

  • @DS 注解可以放在方法、类、接口或枚举上,方法上的注解优先级最高

  • 如果需要动态切换数据源,建议在 Service 方法上使用 @DS 注解,这样可以更灵活地根据业务逻辑切换。

通过以上配置,即可实现 Spring Boot 3 + Druid + MyBatis-Plus 的多数据源支持,并通过 @DS 注解动态切换数据源。

相关文章:

  • Windows11 新机开荒(二)电脑优化设置
  • C++ 类和对象 友元 内部类 this指针 默认成员函数 初始化列表……
  • Pandas DataFrame:数据分析的利器
  • 14 结构体
  • WebSocket和长轮询
  • 【操作系统】Ch6 文件系统
  • 【最后203篇系列】015 几种消息队列的思考
  • ORA-00600错误的深度剖析:如何避免与解决?
  • 蓝桥杯宝石,考察数学。考察公式推导能力
  • 设计模式(行为型)-命令模式
  • 【MySQL】MySQL数据存储机制之存储引擎
  • Vim 编辑器-实现基础跳转
  • MCP 开放协议
  • 55-交换机堆叠
  • P4924 [1007] 魔法少女小Scarlet
  • 模板初阶:
  • 判断一个数是否是质数(素数)
  • 【递归与动态规划(DP) C/C++】(1)递归 与 动态规划(DP)
  • 图书管理借阅系统(豪华版)
  • python二级每日十题(1)
  • 刘永明|在从普及到提高中发展新大众文艺
  • 王毅谈中拉论坛十年成果
  • 迪奥部分客户数据遭泄露,公司称正持续展开调查
  • 2025年度十大IP!IP SH荣膺文化综合类TOP10
  • 左娅︱悼陈昊
  • 领证不用户口本,还需哪些材料?补领证件如何操作?七问七答