Spring-boot配置Mybatis多数据源

先上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")

 

你可能感兴趣的:(Spring-boot配置Mybatis多数据源)