SpringBoot+Mybatis多数据源配置
目录:
主要思想:两套配置文件,两套mapper,两套SqlSessionFactory,各自处理各自的业务,这个两套mapper都可以进行增删改查的操作。
![](https://i-blog.csdnimg.cn/blog_migrate/b8263adf4dfb4e912333a14288f6467e.png)
多数据源配置项:配置多个数据源url;username;password;driver。
![](https://i-blog.csdnimg.cn/blog_migrate/5b52c5ee887787308a692232366e3d40.png)
配置类DatabaseConfig1:注意设置@Primary默认配置注解
@Configuration
@MapperScan(basePackages = "com.**/mapper路径.bcop2021125.mapper.db1", sqlSessionFactoryRef = "SqlSessionFactory1")
public class DatabaseConfig1 {
@Primary
@Bean(name = {"DatebaseProperties"})
@ConfigurationProperties("spring.datasource")
public DataSourceProperties DataSourceProperties() {
return new DataSourceProperties();
}
@Primary
@Bean(name = {"DataSource"})
public DataSource DataSource(@Qualifier("DatebaseProperties") DataSourceProperties dataSourceProperties) {
return dataSourceProperties.initializeDataSourceBuilder().build();
}
@Primary
@Bean("SqlSessionFactory1")
public SqlSessionFactory SqlSessionFactory1(@Qualifier("DataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/*.xml"));
return bean.getObject();
}
@Primary
@Bean("SqlSessionTemplate1")
public SqlSessionTemplate SqlSessionTemplate1(@Qualifier("SqlSessionFactory1")SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
配置类DatabaseConfig2:
@Configuration
@MapperScan(basePackages = "com.***/mapper路径.bcop2021125.mapper.db2", sqlSessionFactoryRef = "SqlSessionFactory2")
public class DatabaseConfig2 {
@Bean(name = {"DatebaseProperties2"})
@ConfigurationProperties("spring.datasource2")
public DataSourceProperties DataSourceProperties() {
return new DataSourceProperties();
}
@Bean(name = {"DataSource2"})
public DataSource DataSource(@Qualifier("DatebaseProperties2") DataSourceProperties dataSourceProperties) {
return dataSourceProperties.initializeDataSourceBuilder().build();
}
@Bean("SqlSessionFactory2")
public SqlSessionFactory SqlSessionFactory1(@Qualifier("DataSource2") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/*.xml"));
return bean.getObject();
}
@Bean("SqlSessionTemplate2")
public SqlSessionTemplate SqlSessionTemplate1(@Qualifier("SqlSessionFactory2")SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}