最近开发过程中,用到多数据源配置,,根据dao层的包名不同,使用不同的数据源,只要把sql写到不同的包名下的类里即可。
1.application.properties文件配置
#mysql数据库连接配置
spring.datasource.mysql.driverClassName = com.mysql.jdbc.Driver
spring.datasource.mysql.jdbc-url = jdbc:mysql://122.115.36.168:3306/Robot?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2B8
spring.datasource.mysql.username = test
spring.datasource.mysql.password = 123456
#sqlServer数据库连接配置
spring.datasource.sqlserver.driverClassName =com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.sqlserver.jdbc-url = jdbc:sqlserver://122.115.36.163:1433;DatabaseName=Coa
spring.datasource.sqlserver.username = sa
spring.datasource.sqlserver.password = cas123456
2.mysql数据连接池配置
@Configuration
@MapperScan(basePackages = "com.qmy.dao.mysql", sqlSessionTemplateRef = "primarySqlSessionTemplate")
public class MySqlDataSource {
@Bean(name = "primaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.mysql")
@Primary
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "primarySqlSessionFactory")
@Primary
public SqlSessionFactory sqlSessionFactory(@Qualifier("primaryDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
return bean.getObject();
}
@Bean(name = "primaryTransactionManager")
@Primary
public DataSourceTransactionManager transactionManager(@Qualifier("primaryDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "primarySqlSessionTemplate")
@Primary
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("primarySqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
3.sqlServer数据连接池配置
@Configuration
@MapperScan(basePackages = "com.qmy.dao.sqlserver", sqlSessionTemplateRef = "secondarySqlSessionTemplate")
public class SqlServerDataSource {
@Bean(name = "secondaryDataSource")
@ConfigurationProperties(prefix = "spring.datasource.sqlserver")
public DataSource testDataSource() {
return DataSourceBuilder.create().build();
}
@Bean(name = "secondarySqlSessionFactory")
public SqlSessionFactory testSqlSessionFactory(@Qualifier("secondaryDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
return bean.getObject();
}
@Bean(name = "secondaryTransactionManager")
public DataSourceTransactionManager testTransactionManager(@Qualifier("secondaryDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "secondarySqlSessionTemplate")
public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("secondarySqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}