见注释
@Configuration
@MapperScan(basePackages = {"com.test.collection"}, sqlSessionFactoryRef = "collectionSqlSessionFactory")
public class CollectionMyBatisConfig {
@Bean(name = "collection")
@ConfigurationProperties(prefix = "spring.datasource.collection")
public DataSource dataSource() {
return new DruidDataSource();
}
// 1. 如果配置了自定义的SqlSessionFactory
@Bean(name = "collectionSqlSessionFactory")
public SqlSessionFactory sqlSessionFactory(@Qualifier("collection") DataSource dataSource) throws Exception {
MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
com.baomidou.mybatisplus.core.MybatisConfiguration configuration = new com.baomidou.mybatisplus.core.MybatisConfiguration();
configuration.setMapUnderscoreToCamelCase(false);
bean.setConfiguration(configuration);
// 3. 可以选择把拦截器驾到configuration里面
bean.setDataSource(dataSource);
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/collection/*.xml"));
return bean.getObject();
}
@Bean(name = "collectionTransactionManager")
public DataSourceTransactionManager transactionManager(@Qualifier("collection") DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean(name = "collectionSqlSessionTemplate")
public SqlSessionTemplate sqlSessionTemplate(@Qualifier("collectionSqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
// 2. 这个拦截器加了就无效,这应该是加到了默认的SqlSessionFactory里面
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}