MyBatis Plus多数据源配置日志管理
描述
在配置MyBatis-Plus多数据源后,原来通过yaml文件配置的日志信息不生效。
原因是在配置多数据源时,重新定义了新的SqlSessionFactory。
使用日志,需要在新定义的SqlSessionFactory中配置日志信息。
解决办法
1 在yaml文件中配置日志管理
2 在MyBatis-Plus数据源配置中主动加载日志配置
@Configuration
@EnableTransactionManagement
@MapperScan(basePackages = {"com.*.mapper"},
sqlSessionFactoryRef = "sqlSessionFactoryMaster")
public class MybatisMasterConfig {
@Autowired
@Qualifier("master")
private DataSource master;
@Bean
@ConfigurationProperties(prefix = "mybatis-plus.configuration")
public MybatisConfiguration globalConfiguration() {
return new MybatisConfiguration();
}
@Bean
@Primary
public SqlSessionFactory sqlSessionFactoryMaster() throws Exception {
MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean();
factoryBean.setDataSource(master);
factoryBean.setMapperLocations(
new PathMatchingResourcePatternResolver().
getResources("classpath*:/mapper/*/**/*.xml")
);
//向Mybatis过滤器链中添加拦截器
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
OptimisticLockerInterceptor optimisticLockerInterceptor = new OptimisticLockerInterceptor();
factoryBean.setPlugins(paginationInterceptor, optimisticLockerInterceptor);
return factoryBean.getObject();
}
@Bean
@Primary
public SqlSessionTemplate sqlSessionTemplateMaster() throws Exception {
SqlSessionTemplate template = new SqlSessionTemplate(sqlSessionFactoryMaster());
return template;
}
@Bean
@Primary
public DataSourceTransactionManager transactionManager1() {
return new DataSourceTransactionManager(master);
}
}
只需要在其中一个数据源配置中修改即可。