首页>代码>spring boot1.3.1+mybatis+velocity学习整合demo分享>/SpringBootMybatis/src/main/java/com/berwin/cloud/conf/MybatisConfig.java
package com.berwin.cloud.conf;

import java.io.IOException;
import java.sql.SQLException;

import javax.annotation.PostConstruct;
import javax.sql.DataSource;

import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.StandardEnvironment;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.util.ClassUtils;

import com.alibaba.druid.pool.DruidDataSource;

@Configuration
@MapperScan(basePackages = "com.berwin.cloud.dao")
public class MybatisConfig {

	private static final Logger logger = LoggerFactory.getLogger(MybatisConfig.class);

	@Autowired
	private DruidDataSourceConfig druidDataSourceConfig;

	@Bean
	public DataSource dataSource() {
		logger.debug("druidDataSourceConfig" + druidDataSourceConfig);
		// 加载配置文件属性
		DruidDataSource ds = new DruidDataSource();
		ds.setDriverClassName(druidDataSourceConfig.getDriverClassName());
		ds.setUsername(druidDataSourceConfig.getUsername());
		ds.setPassword(druidDataSourceConfig.getPassword());
		ds.setUrl(druidDataSourceConfig.getUrl());
		ds.setMaxActive(druidDataSourceConfig.getMaxActive());
		ds.setValidationQuery(druidDataSourceConfig.getValidationQuery());
		ds.setTestOnBorrow(druidDataSourceConfig.isTestOnBorrow());
		ds.setTestOnReturn(druidDataSourceConfig.isTestOnReturn());
		ds.setTestWhileIdle(druidDataSourceConfig.isTestWhileIdle());
		ds.setTimeBetweenEvictionRunsMillis(druidDataSourceConfig.getTimeBetweenEvictionRunsMillis());
		ds.setMinEvictableIdleTimeMillis(druidDataSourceConfig.getMinEictableIdleTimeMillis());
		ds.setPoolPreparedStatements(druidDataSourceConfig.isPoolPreparedStatements());
		ds.setMaxOpenPreparedStatements(druidDataSourceConfig.getMaxOpenPreparedStatements());
		try {
			ds.setFilters(druidDataSourceConfig.getFilters());
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return ds;
	}


	@Bean
	public SqlSessionFactory sqlSessionFactory() throws Exception {
		logger.debug("--> sqlSessionFactory");
		final SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean();
		sqlSessionFactory.setDataSource(dataSource());
		sqlSessionFactory.setConfigLocation(new ClassPathResource("mybatis-config.xml"));
		sqlSessionFactory.setFailFast(true);
		sqlSessionFactory.setMapperLocations(getResource("mapper", "**/*.xml"));
		return sqlSessionFactory.getObject();
	}
	
	@Bean
    public DataSourceTransactionManager transactionManager() {
        logger.debug("> transactionManager");
        return new DataSourceTransactionManager(dataSource());
    }


    @PostConstruct
    public void postConstruct() {
        logger.info("jdbc.settings={}", druidDataSourceConfig);
    }
	
	public Resource[] getResource(String basePackage, String pattern) throws IOException {
		String packageSearchPath = ResourcePatternResolver.CLASSPATH_ALL_URL_PREFIX + ClassUtils.convertClassNameToResourcePath(new StandardEnvironment().resolveRequiredPlaceholders(basePackage)) + "/" + pattern;
		Resource[] resources = new PathMatchingResourcePatternResolver().getResources(packageSearchPath);
		return resources;
	}
}
最近下载更多
8战魂5无双8  LV43 2019年10月14日
annazhang  LV29 2019年8月19日
时空12580  LV13 2019年2月27日
jingcao  LV12 2018年12月16日
a765531168  LV1 2018年12月5日
子不语103  LV7 2018年9月4日
xinxlahu  LV4 2018年4月3日
tys852456  LV1 2018年4月2日
fzfx88  LV2 2018年3月15日
fusxabc5700  LV1 2018年3月7日
最近浏览更多
f22m1a2b2  LV17 5月31日
漫步的海星  LV4 2023年9月21日
1748938504  LV2 2023年6月30日
李亮  LV19 2023年3月6日
5212991314 2022年10月26日
暂无贡献等级
shufsjnjksf  LV1 2022年10月25日
谢谢谢谢谢谢你  LV6 2022年7月19日
wang512237140  LV20 2021年12月14日
没墨2001  LV4 2021年5月26日
dangzhongan  LV3 2021年3月20日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友