package com.haoxiansheng.demo.config;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.support.TransactionTemplate;
import tk.mybatis.spring.annotation.MapperScan;
import javax.sql.DataSource;
/**
* @author haoxiansheng
* @description DalConfig
* @date 2020-04-23
*/
@Configuration
@MapperScan(basePackages = {"com.haoxiansheng.demo.model.dal.mapper"})
public class DalConfig {
@Bean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource,
ApplicationContext applicationContext) throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setConfigLocation(applicationContext.getResource("classpath:mybatis-config.xml"));
sessionFactory.setMapperLocations(applicationContext.getResources("classpath:sqlmap/**/*Mapper.xml"));
return sessionFactory.getObject();
}
@Bean
public MybatisExecutorInterceptor interceptor() {
return new MybatisExecutorInterceptor();
}
@Bean
public DataSourceTransactionManager transactionManager(DataSource dataSource) {
return new DataSourceTransactionManager(dataSource);
}
@Bean
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory factory) throws Exception{
return new SqlSessionTemplate(factory);
}
@Bean
public TransactionTemplate transactionTemplate(DataSourceTransactionManager transactionManager) {
return new TransactionTemplate(transactionManager);
}
}