springboot Mybatis-plus hikari 多数据源
时间: 2025-07-12 20:38:52 浏览: 5
<think>好的,我现在需要帮助用户了解如何在Spring Boot项目中使用MyBatis-Plus和Hikari配置多数据源。根据用户提供的引用内容,我需要整理出配置步骤和注意事项。首先,用户提到了dynamic-datasource-spring-boot-starter这个依赖,所以第一步应该是添加相关的Maven依赖。然后,配置数据源信息,这里需要注意Hikari的连接池设置,因为在引用4中提到必须指定type为HikariDataSource,否则可能会使用Druid,导致问题。接下来是配置MyBatis-Plus,可能需要设置mapper接口的位置和分页插件,引用3提到这种配置方式便于管理不同数据源。然后,用户可能需要手动切换数据源,引用2和4提到了使用@DS注解或者在代码中手动切换。另外,读写分离的配置也是一个点,引用4中的MasterSlaveAutoRoutingPlugin需要被创建为Bean。日志配置也很重要,方便调试。最后,测试验证部分需要确保不同数据源的操作正确,可能通过单元测试或者实际调用。需要提醒用户注意依赖冲突,尤其是Hikari和Druid的版本问题,以及在事务管理中数据源切换的限制。这些步骤应该能帮助用户完成多数据源的配置。现在需要将这些整理成结构清晰的教程,并给出示例代码,同时生成相关问题。</think>以下是在Spring Boot项目中整合MyBatis-Plus、HikariCP实现多数据源的配置教程,结合官方文档和最佳实践总结:
### 一、添加依赖
```xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.6.1</version>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
</dependency>
```
### 二、配置数据源
```yaml
spring:
datasource:
dynamic:
primary: master # 设置默认数据源
strict: false
hikari:
connection-timeout: 30000
maximum-pool-size: 15
datasource:
master:
url: jdbc:mysql://localhost:3306/master_db
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.zaxxer.hikari.HikariDataSource # 必须显式指定[^4]
slave1:
url: jdbc:mysql://localhost:3306/slave1_db
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.zaxxer.hikari.HikariDataSource
```
### 三、配置MyBatis-Plus
```java
@Configuration
@MapperScan(basePackages = "com.example.mapper.*")
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
```
### 四、数据源切换
1. **注解方式**(自动切换):
```java
@Service
public class UserServiceImpl {
@DS("master") // 指定数据源
public void addUser(User user) {
// 主库操作
}
@DS("slave1")
public User getUser(Long id) {
// 从库查询
}
}
```
2. **手动切换**:
```java
DynamicDataSourceContextHolder.push("slave1"); // 切换数据源
try {
// 执行数据库操作
} finally {
DynamicDataSourceContextHolder.poll();
}
```
### 五、读写分离配置(可选)
```java
@Bean
public MasterSlaveAutoRoutingPlugin masterSlaveAutoRoutingPlugin() {
return new MasterSlaveAutoRoutingPlugin();
}
```
### 六、日志配置
```yaml
logging:
level:
com.baomidou.dynamic: debug
```
### 七、测试验证
```java
@SpringBootTest
class DataSourceTests {
@Autowired
private UserMapper userMapper;
@Test
@DS("slave1")
void testSlaveQuery() {
User user = userMapper.selectById(1L);
Assert.notNull(user, "查询失败");
}
}
```
**注意事项**:
1. 避免同时使用其他数据源组件(如Druid)造成冲突[^4]
2. 事务中切换数据源需使用`@DSTransactional`注解
3. Hikari连接池参数应根据实际压力调整
4. 不同数据源的数据库表结构应保持一致
阅读全文
相关推荐


















