baomidou @DS注解

@DS 注解是 MyBatis-Plus 提供的一个注解,用于实现多数据源的动态切换。MyBatis-Plus 是一个增强的 MyBatis 框架,提供了许多实用的功能,其中之一就是多数据源支持。

使用场景

在实际开发中,可能会遇到需要访问多个数据库的情况。通过使用 @DS 注解,可以方便地在不同的数据源之间进行切换,而不需要手动管理数据源。

基本用法

  1. 引入依赖
    确保在项目中引入了 MyBatis-Plus 和多数据源的相关依赖。

    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.x.x</version>
    </dependency>
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
        <version>3.x.x</version>
    </dependency>
    
  2. 配置数据源
    application.ymlapplication.properties 文件中配置多个数据源。

    spring:
      datasource:
        dynamic:
          primary: master # 设置默认的数据源
          datasource:
            master:
              url: jdbc:mysql://localhost:3306/master_db
              username: root
              password: root
              driver-class-name: com.mysql.cj.jdbc.Driver
            slave:
              url: jdbc:mysql://localhost:3306/slave_db
              username: root
              password: root
              driver-class-name: com.mysql.cj.jdbc.Driver
    
  3. 使用 @DS 注解
    在需要切换数据源的方法或类上使用 @DS 注解。

    import com.baomidou.dynamic.datasource.annotation.DS;
    import org.springframework.stereotype.Service;
    
    @Service
    public class UserService {
    
        @DS("master")
        public void useMasterDataSource() {
            // 使用 master 数据源的逻辑
        }
    
        @DS("slave")
        public void useSlaveDataSource() {
            // 使用 slave 数据源的逻辑
        }
    }
    

详细示例

假设我们有一个用户服务类 UserService,需要在不同的数据源之间进行切换:

import com.baomidou.dynamic.datasource.annotation.DS;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    @DS("master")
    public List<User> getUsersFromMaster() {
        return userMapper.selectAll();
    }

    @DS("slave")
    public List<User> getUsersFromSlave() {
        return userMapper.selectAll();
    }
}

在这个示例中,getUsersFromMaster 方法会使用 master 数据源,而 getUsersFromSlave 方法会使用 slave 数据源。

注意事项

  1. 默认数据源:如果没有指定 @DS 注解,默认会使用配置文件中指定的默认数据源。
  2. 事务管理:确保在使用多数据源时正确配置事务管理器,以避免数据一致性问题。
  3. 数据源切换@DS 注解可以作用于类或方法上,方法上的注解优先级高于类上的注解。

通过使用 @DS 注解,可以方便地在不同的数据源之间进行切换,从而简化多数据源的管理和使用。

  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你这个代码我看不懂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值