MybatisConfig.java 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package com.tsi.sig.server.config;
  2. import org.apache.ibatis.session.SqlSessionException;
  3. import org.apache.ibatis.session.SqlSessionFactory;
  4. import org.mybatis.spring.SqlSessionFactoryBean;
  5. import org.mybatis.spring.SqlSessionTemplate;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.beans.factory.annotation.Qualifier;
  8. import org.springframework.beans.factory.annotation.Value;
  9. import org.springframework.boot.context.properties.ConfigurationProperties;
  10. import org.springframework.boot.jdbc.DataSourceBuilder;
  11. import org.springframework.context.ApplicationContext;
  12. import org.springframework.context.annotation.Bean;
  13. import org.springframework.context.annotation.Configuration;
  14. import org.springframework.context.annotation.Primary;
  15. import org.springframework.jdbc.datasource.DataSourceTransactionManager;
  16. import org.springframework.transaction.annotation.EnableTransactionManagement;
  17. import javax.annotation.PostConstruct;
  18. import javax.sql.DataSource;
  19. @Configuration
  20. @EnableTransactionManagement
  21. public class MybatisConfig {
  22. @Value("${spring.datasource.mybatis.mapper-locations:classpath:mybatis/mapper/**/*.xml}")
  23. String mapperLocations;
  24. @PostConstruct
  25. private void init() {}
  26. @Primary
  27. @Bean(name="dataSource")
  28. @ConfigurationProperties(prefix="spring.datasource.mybatis")
  29. public DataSource dataSource() {
  30. return DataSourceBuilder.create().build();
  31. }
  32. @Primary
  33. @Bean(name="sqlSessionFactory")
  34. public SqlSessionFactory sqlSessionFactoryBean(@Autowired @Qualifier("dataSource") DataSource dataSource, ApplicationContext applicationContext)
  35. throws Exception, SqlSessionException {
  36. SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
  37. factoryBean.setDataSource(dataSource);
  38. factoryBean.setConfigLocation(applicationContext.getResource("classpath:mybatis/mybatis-config.xml"));
  39. factoryBean.setMapperLocations(applicationContext.getResources(this.mapperLocations));
  40. return factoryBean.getObject();
  41. }
  42. @Primary
  43. @Bean(name="sqlSession")
  44. public SqlSessionTemplate sqlSession(@Autowired @Qualifier("sqlSessionFactory") SqlSessionFactory sqlSessionFactory) {
  45. return new SqlSessionTemplate(sqlSessionFactory);
  46. }
  47. @Primary
  48. @Bean(name="transactionManager")
  49. public DataSourceTransactionManager transactionManager(@Autowired @Qualifier("dataSource") DataSource dataSource) {
  50. return new DataSourceTransactionManager(dataSource);
  51. }
  52. }