@DS
注解是 MyBatis-Plus 提供的一个注解,用于实现多数据源的动态切换。MyBatis-Plus 是一个增强的 MyBatis 框架,提供了许多实用的功能,其中之一就是多数据源支持。
使用场景
在实际开发中,可能会遇到需要访问多个数据库的情况。通过使用 @DS
注解,可以方便地在不同的数据源之间进行切换,而不需要手动管理数据源。
基本用法
引入依赖:
确保在项目中引入了 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>
配置数据源:
在application.yml
或application.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
使用
@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
数据源。
注意事项
- 默认数据源:如果没有指定
@DS
注解,默认会使用配置文件中指定的默认数据源。 - 事务管理:确保在使用多数据源时正确配置事务管理器,以避免数据一致性问题。
- 数据源切换:
@DS
注解可以作用于类或方法上,方法上的注解优先级高于类上的注解。
通过使用 @DS
注解,可以方便地在不同的数据源之间进行切换,从而简化多数据源的管理和使用。