mybatisplus指定使用druid多数据源的详细配置
时间: 2023-09-20 19:08:06 浏览: 48
Mybatis-Plus 是一个 Mybatis 的增强工具,在多数据源的配置方面可以与 Mybatis 一样,但是需要注意的是,Mybatis-Plus 需要使用到 Spring 的事务管理,因此需要在 Spring 中配置多数据源并指定使用 Druid 数据源。
以下是 Mybatis-Plus 指定使用 Druid 多数据源的详细配置步骤:
1. 引入依赖
```xml
<!-- Mybatis-Plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<!-- Druid 数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
```
2. 配置多数据源
```java
@Configuration
public class DataSourceConfig {
@Bean
@ConfigurationProperties("spring.datasource.master")
public DataSource masterDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties("spring.datasource.slave")
public DataSource slaveDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean
@Primary
public DynamicDataSource dataSource(DataSource masterDataSource, DataSource slaveDataSource) {
Map<Object, Object> targetDataSources = new HashMap<>();
targetDataSources.put(DataSourceEnum.MASTER.name(), masterDataSource);
targetDataSources.put(DataSourceEnum.SLAVE.name(), slaveDataSource);
return new DynamicDataSource(masterDataSource, targetDataSources);
}
}
```
3. 配置 Mybatis-Plus
```java
@Configuration
public class MybatisPlusConfig {
@Autowired
private DynamicDataSource dataSource;
@Bean
public MybatisSqlSessionFactoryBean mybatisSqlSessionFactoryBean() throws Exception {
MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
return factoryBean;
}
}
```
4. 配置事务管理器
```java
@Configuration
@EnableTransactionManagement
public class TransactionConfig {
@Autowired
private DynamicDataSource dataSource;
@Bean
public DataSourceTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource);
}
}
```
5. 在 Mapper 中指定数据源
```java
@Mapper
public interface UserMapper extends BaseMapper<User> {
@Select("select * from user")
@DS(DataSourceEnum.SLAVE)
List<User> selectAll();
}
```
其中,`@DS` 注解用于指定数据源,`DataSourceEnum` 是一个枚举类,用于定义数据源的名称。
这样就完成了 Mybatis-Plus 指定使用 Druid 多数据源的配置。