宁波外贸网站今日重大国际新闻
在 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=UTCusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driverslave: # 从数据源url: jdbc:mysql://localhost:3306/slave?useSSL=false&serverTimezone=UTCusername: rootpassword: rootdriver-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
注解动态切换数据源。