您的位置:首页 > 编程语言 > Java开发

Spring-boot配置Mybatis多数据源

2016-05-12 16:07 477 查看
先上Mybatis配置类:

@Configuration
@MapperScan(basePackages = "cn.test.dao.dmp", sqlSessionTemplateRef = "testSqlSessionTemplate")
public class TestDataSourceConfig {

@Bean(name = "testDataSource")
@ConfigurationProperties(prefix = "spring.datasource.test")
public DataSource testDataSource() {
return DataSourceBuilder.create().build();
}

@Bean(name = "testSqlSessionFactory")
public SqlSessionFactory testSqlSessionFactory(@Qualifier("testDataSource") DataSource dataSource) throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:/mybatis/test/*.xml"));
return bean.getObject();
}

@Bean(name = "testTransactionManager")
public DataSourceTransactionManager testTransactionManager(@Qualifier("testDataSource") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}

@Bean(name = "testSqlSessionTemplate")
public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("testSqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception {
return new SqlSessionTemplate(sqlSessionFactory);
}
}

一层一层注入,先创建DataSource,扫描application.properties的配置自动创建

然后分别注入到事务和SqlSessionFactory里

最后配置一下SqlSessionTemplate

因为是多数据源,每个bean最好都配置一下name,防止重复,其他数据源也是这么配置,修改下扫描地址,DataSource就可以了

声明事务时最好加上名称 比如 @Transactional("testTransactionManager")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: