1
0

DataSourceAutoConfig.java 3.5 KB

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