第一步:配置数据源配置
spring:
datasource:
# 数据源1
mydb1:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost/my_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&noAccessToProcedureBodies=true&useAffectedRows=true
username: root
password: root
# 数据源2
mydb2:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost2/my_test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&noAccessToProcedureBodies=true&useAffectedRows=true
username: root
password: root
# 设置mybatis
mybatis:
mapper-locations: classpath:mapper/*/*.xml
第二步:配置数据源config
数据配置类1:
@Configuration
@MapperScan(basePackages = {"com.xxxxxx.marketingcenter.dal.dao.one"} , sqlSessionFactoryRef = "myDB1SqlSessionFactory")
public class MyDBOne {
@Bean(name = "myDataSourceOne")
// 下面的注解作用就是从application.properties中读取以这个字符串开头的那些配置,设置为数据源的配置
@ConfigurationProperties(prefix = "spring.datasource.mydb1")
@Primary
public DataSource myDataSourceOne() {
return DataSourceBuilder.create().build();
}
@Bean(name = "myDB1TransactionManager")
@Primary
public DataSourceTransactionManager oneTransactionManager(@Qualifier("myDataSourceOne")DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "myDB1SqlSessionFactory")
@Primary
public SqlSessionFactory oneSqlSessionFactory(@Qualifier("myDataSourceOne") DataSource dataSource)
throws Exception {
final SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources("classpath:mapper/one/*.xml"));
return sessionFactoryBean.getObject();
}
@Primary
@Bean(name = "myDBOneTemplate")
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("myDB1SqlSessionFactory")
SqlSessionFactory sqlSessionFactory) {
SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory);
return sqlSessionTemplate;
}
}
数据配置类2:
@Configuration
@MapperScan(basePackages = {"com.xxxxxx.marketingcenter.dal.dao.two"} , sqlSessionFactoryRef = "myDB2SqlSessionFactory")
public class MyDBTwo {
@Bean(name = "myDataSourceTwo")
// 下面的注解作用就是从application.properties中读取以这个字符串开头的那些配置,设置为数据源的配置
@ConfigurationProperties(prefix = "spring.datasource.mydb2")
@Primary
public DataSource myDataSourceTwo() {
return DataSourceBuilder.create().build();
}
@Bean(name = "myDB1TransactionManager")
@Primary
public DataSourceTransactionManager twoTransactionManager(@Qualifier("myDataSourceTwo")DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "myDB2SqlSessionFactory")
@Primary
public SqlSessionFactory twoSqlSessionFactory(@Qualifier("myDataSourceTwo") DataSource dataSource)
throws Exception {
final SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
sessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver()
.getResources("classpath:mapper/two/*.xml"));
return sessionFactoryBean.getObject();
}
@Primary
@Bean(name = "myDBTwoTemplate")
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("myDB2SqlSessionFactory")
SqlSessionFactory sqlSessionFactory) {
SqlSessionTemplate sqlSessionTemplate = new SqlSessionTemplate(sqlSessionFactory);
return sqlSessionTemplate;
}
}