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.yml
或 application.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
注解动态切换数据源。