DataSourceAutoConfig.java 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package com.simuwang.base.config;
  2. import cn.hutool.core.collection.ListUtil;
  3. import com.baomidou.mybatisplus.core.MybatisConfiguration;
  4. import com.baomidou.mybatisplus.core.config.GlobalConfig;
  5. import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
  6. import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
  7. import org.apache.ibatis.session.SqlSessionFactory;
  8. import org.mybatis.spring.annotation.MapperScan;
  9. import org.springframework.beans.factory.annotation.Autowired;
  10. import org.springframework.beans.factory.annotation.Qualifier;
  11. import org.springframework.context.annotation.Bean;
  12. import org.springframework.context.annotation.Configuration;
  13. import org.springframework.context.annotation.Primary;
  14. import org.springframework.core.io.Resource;
  15. import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
  16. import org.springframework.jdbc.datasource.DataSourceTransactionManager;
  17. import org.springframework.transaction.support.TransactionTemplate;
  18. import javax.sql.DataSource;
  19. import java.util.List;
  20. @MapperScan(value = {"com.simuwang.base.mapper"}, sqlSessionFactoryRef = "sqlSessionFactory")
  21. @Configuration
  22. public class DataSourceAutoConfig {
  23. static final String[] MAPPER_LOCATIONS = {"classpath*:mapper/**/*.xml"};
  24. @Autowired
  25. @Qualifier(DataSourceConfiguration.DS_DATA_DAQ)
  26. private DataSource dataSource;
  27. @Autowired
  28. private MybatisPlusInterceptor mybatisPlusInterceptor;
  29. @Primary
  30. @Bean(name = "sqlSessionFactory")
  31. public SqlSessionFactory sqlSessionFactory() throws Exception {
  32. final MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();
  33. sessionFactory.setDataSource(this.dataSource);
  34. // 扫描追加多个包下的资源文件
  35. List<Resource> resources = ListUtil.list(false);
  36. for (String mapperLocation : MAPPER_LOCATIONS) {
  37. PathMatchingResourcePatternResolver patternResolver = new PathMatchingResourcePatternResolver();
  38. Resource[] resource = patternResolver.getResources(mapperLocation);
  39. if (resource.length > 0) {
  40. resources.addAll(ListUtil.toList(resource));
  41. }
  42. }
  43. sessionFactory.setMapperLocations(resources.toArray(new Resource[]{}));
  44. // 添加mybatis-plus分页拦截插件
  45. MybatisConfiguration configuration = new MybatisConfiguration();
  46. configuration.addInterceptor(this.mybatisPlusInterceptor);
  47. // 设置下划线转驼峰
  48. configuration.setMapUnderscoreToCamelCase(true);
  49. sessionFactory.setConfiguration(configuration);
  50. // 关闭横幅
  51. GlobalConfig globalConfig = new GlobalConfig();
  52. globalConfig.setBanner(false);
  53. sessionFactory.setGlobalConfig(globalConfig);
  54. return sessionFactory.getObject();
  55. }
  56. @Primary
  57. @Bean(name = "transactionManager")
  58. public DataSourceTransactionManager transactionManager() {
  59. return new DataSourceTransactionManager(this.dataSource);
  60. }
  61. @Primary
  62. @Bean(name = "transactionTemplate")
  63. public TransactionTemplate transactionTemplate() {
  64. return new TransactionTemplate(this.transactionManager());
  65. }
  66. }