基于注解的springboot+mybatis的多数据源组件的实现
通常业务开发中,我们会使用到多个数据源,比如,部分数据存在mysql实例中,部分数据是在oracle数据库中,那这时候,项目基于springboot和mybatis,其实只需要配置两个数据源即可,只需要按照
dataSource – SqlSessionFactory – SqlSessionTemplate配置好就可以了。
如下代码,首先我们配置一个主数据源,通过@Primary注解标识为一个默认数据源,通过配置文件中的spring.datasource作为数据源配置,生成SqlSessionFactoryBean,最终,配置一个SqlSessionTemplate。
1 @Configuration
2 @MapperScan(basePackages = "com.xxx.mysql.mapper", sqlSessionFactoryRef = "primarySqlSessionFactory")
3 public class PrimaryDataSourceConfig {
4
5 @Bean(name = "primaryDataSource")
6 @Primary
7 @ConfigurationProperties(prefix = "spring.datasource")
8 public DataSource druid() {
9 return new DruidDataSource();
10 }
11
12 @Bean(name = "primarySqlSessionFactory")
13 @Primary
14 public SqlSessionFactory primarySqlSessionFactory(@Qualifier("primaryDataSource") DataSource dataSource) throws Exception {
15 SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
16 bean.setDataSource(dataSource);
17 bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml"));
18 bean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);
19 return bean.getObject();
20 }
21
22 @Bean("primarySqlSessionTemplate")
23 @Primary
24 public SqlSessionTemplate primarySqlSessionTemplate(@Qualifier("primarySqlSessionFactory") SqlSessionFactory sessionFactory) {
25 return new SqlSessionTemplate(sessionFactory);
26 }
27 }


