mabatis-plus如何支持多数据源
时间: 2023-12-30 18:02:53 浏览: 163
MyBatis-Plus 默认情况下只支持单数据源,但是通过配置多个 SqlSessionFactory 和 DataSource 可以实现多数据源的支持。以下是具体步骤:
1. 在配置文件中定义多个数据源和对应的 SqlSessionFactory。
```xml
<!-- 数据源1 -->
<bean id="dataSource1" class="com.alibaba.druid.pool.DruidDataSource">
...
</bean>
<!-- 数据源2 -->
<bean id="dataSource2" class="com.alibaba.druid.pool.DruidDataSource">
...
</bean>
<!-- SqlSessionFactory1 -->
<bean id="sqlSessionFactory1" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource1"/>
...
</bean>
<!-- SqlSessionFactory2 -->
<bean id="sqlSessionFactory2" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource2"/>
...
</bean>
```
2. 在 MyBatis-Plus 的全局配置中定义多个 SqlSessionFactory。
```java
@Configuration
public class MybatisPlusConfig {
@Autowired
@Qualifier("sqlSessionFactory1")
private SqlSessionFactory sqlSessionFactory1;
@Autowired
@Qualifier("sqlSessionFactory2")
private SqlSessionFactory sqlSessionFactory2;
@Bean
public MybatisSqlSessionFactoryBean mybatisSqlSessionFactoryBean() {
MybatisSqlSessionFactoryBean sessionFactoryBean = new MybatisSqlSessionFactoryBean();
Map<String, SqlSessionFactory> targetSqlSessionFactorys = new HashMap<>();
targetSqlSessionFactorys.put("db1", sqlSessionFactory1);
targetSqlSessionFactorys.put("db2", sqlSessionFactory2);
sessionFactoryBean.setTargetSqlSessionFactorys(targetSqlSessionFactorys);
return sessionFactoryBean;
}
}
```
3. 在 MyBatis-Plus 的 MapperScannerConfigurer 中指定多个 SqlSessionFactory。
```java
@Configuration
public class MapperScannerConfig {
@Autowired
@Qualifier("sqlSessionFactory1")
private SqlSessionFactory sqlSessionFactory1;
@Autowired
@Qualifier("sqlSessionFactory2")
private SqlSessionFactory sqlSessionFactory2;
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer scannerConfigurer = new MapperScannerConfigurer();
scannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory1");
scannerConfigurer.setBasePackage("com.example.mapper.db1");
scannerConfigurer.setSqlSessionFactory(sqlSessionFactory1);
scannerConfigurer.setSqlSessionTemplateBeanName("sqlSessionTemplate1");
MapperScannerConfigurer scannerConfigurer2 = new MapperScannerConfigurer();
scannerConfigurer2.setSqlSessionFactoryBeanName("sqlSessionFactory2");
scannerConfigurer2.setBasePackage("com.example.mapper.db2");
scannerConfigurer2.setSqlSessionFactory(sqlSessionFactory2);
scannerConfigurer2.setSqlSessionTemplateBeanName("sqlSessionTemplate2");
return scannerConfigurer;
}
}
```
以上就是使用 MyBatis-Plus 实现多数据源的步骤。
阅读全文
相关推荐

















