MybatisConfig.java 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package com.tsi.comm.server.mybatis;
  2. import com.zaxxer.hikari.HikariDataSource;
  3. import lombok.RequiredArgsConstructor;
  4. import org.apache.ibatis.session.SqlSessionFactory;
  5. import org.mybatis.spring.SqlSessionFactoryBean;
  6. import org.mybatis.spring.SqlSessionTemplate;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.beans.factory.annotation.Qualifier;
  9. import org.springframework.beans.factory.annotation.Value;
  10. import org.springframework.boot.context.properties.ConfigurationProperties;
  11. import org.springframework.boot.jdbc.DataSourceBuilder;
  12. import org.springframework.context.ApplicationContext;
  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.env.Environment;
  17. import org.springframework.jdbc.datasource.DataSourceTransactionManager;
  18. import org.springframework.transaction.annotation.EnableTransactionManagement;
  19. import javax.sql.DataSource;
  20. @RequiredArgsConstructor
  21. @Configuration
  22. @EnableTransactionManagement
  23. public class MybatisConfig {
  24. private final Environment environment;
  25. @Value("${spring.datasource.hikari.mapper-locations:classpath:mybatis/mapper/**/*.xml}")
  26. String mapperLocations;
  27. @Primary
  28. @Bean(name="dataSource")
  29. @ConfigurationProperties(prefix="spring.datasource.hikari")
  30. public DataSource dataSource() {
  31. HikariDataSource dataSource = DataSourceBuilder.create()
  32. .type(HikariDataSource.class)
  33. .build();
  34. dataSource.setPoolName(this.environment.getProperty("spring.datasource.hikari.pool-name"));
  35. return dataSource;
  36. // return DataSourceBuilder.create().build();
  37. }
  38. @Primary
  39. @Bean(name="sqlSessionFactory")
  40. public SqlSessionFactory sqlSessionFactoryBean(@Autowired @Qualifier("dataSource") DataSource dataSource, ApplicationContext applicationContext)
  41. throws Exception {
  42. SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
  43. factoryBean.setDataSource(dataSource);
  44. //factoryBean.setConfigLocation(applicationContext.getResource("classpath:mapper/mapper/mapper-config.xml"));
  45. factoryBean.setMapperLocations(applicationContext.getResources(mapperLocations));
  46. return factoryBean.getObject();
  47. }
  48. @Primary
  49. @Bean(name="sqlSession")
  50. public SqlSessionTemplate sqlSession(@Autowired @Qualifier("sqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
  51. return new SqlSessionTemplate(sqlSessionFactory);
  52. }
  53. @Primary
  54. @Bean(name="transactionManager")
  55. public DataSourceTransactionManager transactionManager(@Autowired @Qualifier("dataSource") DataSource dataSource) {
  56. return new DataSourceTransactionManager(dataSource);
  57. }
  58. }