1、先配置数据库连接文件
在连接文件中,设置多个数据库连接
@Configuration
public class DataSourceConfig {
@Primary // 设置为主数据库
@Bean(name="AAA")
@ConfigurationProperties(prefix = "spring.datasource.AAA")
public DataSource coldChainReadDataSource(){
return DataSourceBuilder.create(DruidDataSource.class.getClassLoader()).build(); // 这里使用了阿里巴巴的数据库连接池Druid
}
@Bean(name="BBB")
@ConfigurationProperties(prefix = "spring.datasource.BBB")
public DataSource coldChainWriteDataSource(){
return DataSourceBuilder.create(DruidDataSource.class.getClassLoader()).build();
}
}
2、AAA数据库连接配置文件
@Configuration
@MapperScan(basePackages = {"com.xx.xx.xx.AAA"},sqlSessionTemplateRef = "loadrSqlSessionTemplate")
public class MyBatisLoadReadConfig {
@Autowired
@Qualifier("AAA") // 其他都一样,只要点在这里,加载不同的数据连接配置
private DataSource dataSource;
@Value("${spring.datasource.AAA.jdbcUrl}")
private String jdbcUrl;
@Bean
public SqlSessionFactory loadrSqlSessionFactory() throws Exception{
SqlSessionFactoryBean sqlSessionFactoryBean=new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setVfs(SpringBootVFS.class);
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource[] resource=resolver.getResources("classpath:com/xx/xx/xx/AAA/*/*.xml"); // 配置xml路径
sqlSessionFactoryBean.setMapperLocations(resource);
sqlSessionFactoryBean.setTypeAliasesPackage("com.xx.xx.model"); // 配置数据返回实体包路径
sqlSessionFactoryBean.setPlugins(new Interceptor[]{new MybatisInterceptor(jdbcUrl)}); // 设置数据库sql检测插件,主要用户sql检测的。不需要sql中间件的,可以不用设置
return sqlSessionFactoryBean.getObject();
}
@Bean
public SqlSessionTemplate loadrSqlSessionTemplate() throws Exception{
SqlSessionTemplate sqlSessionTemplate=new SqlSessionTemplate(loadrSqlSessionFactory());
return sqlSessionTemplate;
}
// 事务管理器
@Bean(name = "loadrTransactionManager")
public DataSourceTransactionManager loadrTransactionManager() {
return new DataSourceTransactionManager(dataSource);
}
}
3、BBB数据库连接配置文件
@Configuration
@MapperScan(basePackages = {"com.xx.xx.xx.BBB"},sqlSessionTemplateRef = "loadrSqlSessionTemplate")
public class MyBatisLoadReadConfig {
@Resource(name = "BBB")
private DataSource dataSource;
@Value("${spring.datasource.BBB.jdbcUrl}")
private String jdbcUrl;
@Bean
public SqlSessionFactory loadrSqlSessionFactory() throws Exception{
SqlSessionFactoryBean sqlSessionFactoryBean=new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setVfs(SpringBootVFS.class);
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource[] resource=resolver.getResources("classpath:com/xx/xx/xx/BBB/*/*.xml"); // 配置xml路径
sqlSessionFactoryBean.setMapperLocations(resource);
sqlSessionFactoryBean.setTypeAliasesPackage("com.xx.xx.model"); // 配置数据返回实体包路径
sqlSessionFactoryBean.setPlugins(new Interceptor[]{new MybatisInterceptor(jdbcUrl)}); // 设置数据库sql检测插件,主要用户sql检测的
return sqlSessionFactoryBean.getObject();
}
@Bean
public SqlSessionTemplate loadrSqlSessionTemplate() throws Exception{
SqlSessionTemplate sqlSessionTemplate=new SqlSessionTemplate(loadrSqlSessionFactory());
return sqlSessionTemplate;
}
// 事务管理器
@Bean(name = "loadrTransactionManager")
public DataSourceTransactionManager loadrTransactionManager() {
return new DataSourceTransactionManager(dataSource);
}
}
=============再多的,以此类推===============
网友评论