springboot整合mybaits多数据源的配置,主要关系到是四个方面,
1、在配置文件中写明各个数据库的配置
2、添加各个数据库的config配置文件
3、指明各个数据库对应的Dao层接口的扫描
4、指明各个数据库对应Mapping文件的位置
好废话不多说,直接开始怼代码,
1、配置文件中声明各个数据库的配置,如下
spring:
datasource:
db2:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc-url: 数据库连接
username: 用户名
password: 密码
db2:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc-url: 数据库连接
username: 用户名
password: 密码
这里需要多说一句,这里DataSource的别名,yml文件中需要全部为小写,大写会报错
2、在配置文件中新增两个配置文件分别叫DataSourceDBaConfig 和 DataSourceDBbConfig
文件内容大同小异,这里只列举一个,如下
@Configuration
@MapperScan(basePackages = "com.XXX.XXX.mapper.dba" , sqlSessionTemplateRef = "dbaSqlSessionTemplate") //这里的package指向的是DAO层的接口文件所在的包
public class DataSourceUCMLBusinessAConfig {
@Bean(name = "dbaDataSource")
@ConfigurationProperties(prefix = "spring.datasource.dba")//这里的前缀和yml配置文件中数据库的配置一致
public DataSource ucmlbusinessaDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "dbaSqlSessionFactory")
public SqlSessionFactory dbaSqlSessionFactory(@Qualifier("dbaDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:/mapping/dba/*.xml"));// 指向的是mapping文件的存放地址
return bean.getObject();
}
@Bean(name = "dbaTransactionManager")
public DataSourceTransactionManager ucmlbusinessaTransactionManager(@Qualifier("dbaDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "dbaSqlSessionTemplate")
public SqlSessionTemplate ucmlbusinessaSqlSessionTemplate(@Qualifier("dbaSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
剩下就是集成mybatis,在这里就不赘述了