mybatisplus多数据源配置数据库连接池
时间: 2023-11-17 10:59:14 浏览: 40
MybatisPlus是一个基于Mybatis的增强工具,它提供了很多实用的功能,其中包括多数据源配置。在配置多数据源时,需要先在配置文件中定义多个数据源的连接信息,然后在代码中通过@Configuration注解和@Bean注解来创建多个数据源的实例。在创建数据源实例时,可以使用@ConfigurationProperties注解来指定数据源的连接信息,例如数据库的URL、用户名、密码等。接着,需要在MybatisPlus的配置文件中配置多个SqlSessionFactory和TransactionManager,以便在不同的数据源之间进行切换。最后,在需要使用多数据源的地方,可以通过@Qualifier注解来指定使用哪个数据源。
具体的实现步骤可以参考以下方法:
1.在配置文件中定义多个数据源的连接信息,例如:
spring.datasource.api3.url=jdbc:mysql://192.168.25.134:3306/test
spring.datasource.api3.username=root
spring.datasource.api3.password=123456
spring.datasource.api4.url=jdbc:mysql://192.168.25.166:3306/test
spring.datasource.api4.username=root
spring.datasource.api4.password=123456
2.在代码中创建多个数据源的实例,例如:
@Configuration
public class DataSourceConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource.api3")
public DataSource dataSource2() {
return DataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties(prefix = "spring.datasource.api4")
public DataSource dataSource3() {
return DataSourceBuilder.create().build();
}
}
3.在MybatisPlus的配置文件中配置多个SqlSessionFactory和TransactionManager,例如:
@Configuration
@MapperScan(basePackages = {"com.example.demo.mapper"})
public class MybatisPlusConfig {
@Bean(name = "api3SqlSessionFactory")
public SqlSessionFactory api3SqlSessionFactory(@Qualifier("dataSource2") DataSource dataSource) throws Exception {
MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
return factoryBean.getObject();
}
@Bean(name = "api4SqlSessionFactory")
public SqlSessionFactory api4SqlSessionFactory(@Qualifier("dataSource3") DataSource dataSource) throws Exception {
MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
return factoryBean.getObject();
}
@Bean(name = "api3TransactionManager")
public DataSourceTransactionManager api3TransactionManager(@Qualifier("dataSource2") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "api4TransactionManager")
public DataSourceTransactionManager api4TransactionManager(@Qualifier("dataSource3") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
}
4.在需要使用多数据源的地方,通过@Qualifier注解来指定使用哪个数据源,例如:
@Service
public class UserServiceImpl implements UserService {
@Autowired
@Qualifier("api3SqlSessionFactory")
private SqlSessionFactory api3SqlSessionFactory;
@Autowired
@Qualifier("api4SqlSessionFactory")
private SqlSessionFactory api4SqlSessionFactory;
@Override
public List<User> getUserListFromApi3() {
SqlSession sqlSession = new SqlSessionTemplate(api3SqlSessionFactory);
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
return userMapper.getUserList();
}
@Override
public List<User> getUserListFromApi4() {
SqlSession sqlSession = new SqlSessionTemplate(api4SqlSessionFactory);
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
return userMapper.getUserList();
}
}