Springboot添加多数据源
spring:
datasource:
ds1:
jdbc-url: jdbc:mysql://${mysql_url_ds1}?useSSL=false&characterEncoding=utf8
username: ${mysql_username_ds1}
password: ${mysql_password_ds1}
ds2:
jdbc-url: jdbc:mysql://${mysql_url_ds2}?useSSL=false&characterEncoding=utf8
username: ${mysql_username_ds2}
password: ${mysql_password_ds2}
@Configuration
@MapperScan(basePackages = "com.xxx.yyy.dao.ds1", sqlSessionTemplateRef = "ds1SqlSessionTemplate")
public class DataSourceConfig4ds1 {
@Primary
@Bean(name = "ds1DataSource")
@ConfigurationProperties(prefix = "spring.datasource.ds1")
public DataSource ds1DataSource() {
return DataSourceBuilder.create().build();
}
@Primary
@Bean("ds1SqlSessionFactory")
public SqlSessionFactory ds1SqlSessionFactory(@Qualifier(value = "ds1DataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();
sqlSessionFactory.setDataSource(dataSource);
return sqlSessionFactory.getObject();
}
@Primary
@Bean(name = "ds1TransactionManager")
public DataSourceTransactionManager ds1TransactionManager(@Qualifier("ds1DataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Primary
@Bean(name = "ds1SqlSessionTemplate")
public SqlSessionTemplate ds1SqlSessionTemplate(@Qualifier("ds1SqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
@Configuration
@MapperScan(basePackages = "com.xxx.yyy.dao.ds2", sqlSessionTemplateRef = "ds2SqlSessionTemplate")
public class DataSourceConfig4ds2 {
@Bean(name = "ds2DataSource")
@ConfigurationProperties(prefix = "spring.datasource.ds2")
public DataSource ds2DataSource() {
return DataSourceBuilder.create().build();
}
@Bean("ds2SqlSessionFactory")
public SqlSessionFactory ds2SqlSessionFactory(@Qualifier(value = "ds2DataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();
sqlSessionFactory.setDataSource(dataSource);
return sqlSessionFactory.getObject();
}
@Bean(name = "ds2TransactionManager")
public DataSourceTransactionManager ds2TransactionManager(@Qualifier("ds2DataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "ds2SqlSessionTemplate")
public SqlSessionTemplate ds2SqlSessionTemplate(@Qualifier("ds2SqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}