SpringBoot配置多个DataSource
application.properties
spring.datasource.db1.driver-class-name=
spring.datasource.db1.jdbc-url=
spring.datasource.db1.username=
spring.datasource.db1.password=
spring.datasource.db2.driver-class-name=
spring.datasource.db2.jdbc-url=
spring.datasource.db2.username=
spring.datasource.db2.password=
DataSourceConfig
DB1配置
@Configuration
@MapperScan(basePackages = "com.example.mapper.db1", sqlSessionFactoryRef = "MySQLSqlSessionFactory")
public class MySQLDataSourceConfig {
@Bean(name = "MySQLDataSource")
@Primary
@ConfigurationProperties(prefix = "spring.datasource.db1")
public DataSource getDateSource1() {
return DataSourceBuilder.create().build();
}
@Bean(name = "MySQLSqlSessionFactory")
@Primary
public SqlSessionFactory test1SqlSessionFactory(
@Qualifier("MySQLDataSource") DataSource datasource) throws Exception {
MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean ();
bean.setDataSource(datasource);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/db1/*.xml"));
return bean.getObject();
}
@Bean
public PlatformTransactionManager transactionManager(@Qualifier("MySQLDataSource")DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean("MySQLSqlSessionTemplate")
@Primary
public SqlSessionTemplate test1SqlSessionTemplate(
@Qualifier("MySQLSqlSessionFactory") SqlSessionFactory sessionFactory) {
return new SqlSessionTemplate(sessionFactory);
}
}
DB2配置
@Configuration
@MapperScan(basePackages = "com.example.mapper.db2", sqlSessionFactoryRef = "SqliteSqlSessionFactory")
public class SqliteDataSourceConfig {
@Bean(name = "SqliteDateSource")
@ConfigurationProperties(prefix = "spring.datasource.db2")
public DataSource getDateSource1() {
return DataSourceBuilder.create().build();
}
@Bean(name = "SqliteSqlSessionFactory")
public SqlSessionFactory test1SqlSessionFactory(
@Qualifier("SqliteDateSource") DataSource datasource) throws Exception {
MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
bean.setDataSource(datasource);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/db2/*.xml"));
return bean.getObject();
}
@Bean
public PlatformTransactionManager transactionManager(@Qualifier("SqliteDateSource")DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean("SqliteSqlSessionTemplate")
public SqlSessionTemplate test1SqlSessionTemplate(
@Qualifier("SqliteSqlSessionFactory") SqlSessionFactory sessionFactory) {
return new SqlSessionTemplate(sessionFactory);
}
}
Mapper XML文件分包
- resources
- maper
- db1
table1Mapper.xml
table2Mapper.xml - db2
table3Mapper.xml
table4Mapper.xml