基于注解的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 }