package com.ielpm.pay.web.mybatis;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import com.alibaba.druid.pool.DruidDataSourceFactory;
@Configuration
@PropertySource("classpath:jdbc.properties")
@MapperScan(basePackages="com.ielpm.pay.web.dao", sqlSessionFactoryRef = "sqlSessionFactory")
public class DatasourceConfig {
@Autowired
private Environment env;
@Bean
public DataSource dataSource() {
Map configMap = new HashMap();
configMap.put("driverClassName", env.getProperty("jdbc.driverClassName"));
configMap.put("url", env.getProperty("jdbc.url"));
configMap.put("username", env.getProperty("jdbc.username"));
configMap.put("password", env.getProperty("jdbc.password"));
configMap.put("filters", env.getProperty("jdbc.filters"));
configMap.put("initialSize", env.getProperty("jdbc.initialSize"));
configMap.put("maxActive", env.getProperty("jdbc.maxActive"));
configMap.put("maxWait", env.getProperty("jdbc.maxWait"));
configMap.put("timeBetweenEvictionRunsMillis", env.getProperty("jdbc.timeBetweenEvictionRunsMillis"));
configMap.put("minEvictableIdleTimeMillis", env.getProperty("jdbc.minEvictableIdleTimeMillis"));
configMap.put("validationQuery", env.getProperty("jdbc.validationQuery"));
configMap.put("testWhileIdle", env.getProperty("jdbc.testWhileIdle"));
configMap.put("testOnBorrow", env.getProperty("jdbc.testOnBorrow"));
configMap.put("testOnReturn", env.getProperty("jdbc.testOnReturn"));
configMap.put("poolPreparedStatements", env.getProperty("jdbc.poolPreparedStatements"));
configMap.put("maxPoolPreparedStatementPerConnectionSize", env.getProperty("jdbc.maxPoolPreparedStatementPerConnectionSize"));
try {
return DruidDataSourceFactory.createDataSource(configMap);
} catch (Exception e) {
e.printStackTrace();
System.exit(-1);
}
return null;
}
@Bean
@ConditionalOnMissingBean
public DataSourceTransactionManager transactionManager() {
return new DataSourceTransactionManager(dataSource());
}
@Bean
@ConditionalOnMissingBean
public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setTypeAliasesPackage("com.ielpm.pay.web.model");
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sessionFactory.setMapperLocations(resolver.getResources("classpath:com/ielpm/pay/web/dao/mapping/*.xml"));
return sessionFactory.getObject();
}
// @Bean
// public SqlSessionFactory sqlSessionFactory() throws IOException{
// SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
// bean.setDataSource(dataSource());
// PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
// bean.setMapperLocations(resolver.getResources("classpath:com/ielpm/pay/web/dao/mapping/*.xml"));
// SqlSessionFactory sqlSessionFactory = null;
// try {
// sqlSessionFactory = bean.getObject();
// }catch (Exception e) {
// e.printStackTrace();
// System.exit(0);
// }
// return sqlSessionFactory;
// }
}
spring boot mybatis
最新推荐文章于 2021-07-28 12:24:33 发布