说明:基于 Java-Config来配置。
不是通过mybatis的SqlSessionFactoryBuilder来创建SqlSessionFactory,而是通过mybatis-Spring的SqlSessionFactoryBean来获取。
@Bean(name = "transactionManager") public DataSourceTransactionManager dataSourceTransactionManager() { DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager(); dataSourceTransactionManager.setDataSource(this.dataSource()); return dataSourceTransactionManager; }
@Bean(name = "sqlSessionFactory") public SqlSessionFactory sqlSessionFactory() throws Exception { SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(this.dataSource()); // sqlSessionFactoryBean.setConfigLocation(new // ClassPathResource("mybatis-config.xml")); // Resource[] mapperLocations = new Resource[] { new // ClassPathResource("com.expert.dao") }; // 这个和@MapperScan冲突吗?这个设置有问题。 // sqlSessionFactoryBean.setMapperLocations(mapperLocations);//<mappers> sqlSessionFactoryBean.setTypeAliasesPackage(PojoBasePackage); // sqlSessionFactoryBean.setCache(cache); SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBean.getObject(); // It can be specified a Configuration instance directly without MyBatis // XML configuration file. sqlSessionFactory.getConfiguration().setMapUnderscoreToCamelCase(true);// 开启驼峰映射 sqlSessionFactory.getConfiguration().setCacheEnabled(true); sqlSessionFactory.getConfiguration().setLazyLoadingEnabled(true); sqlSessionFactory.getConfiguration().setAggressiveLazyLoading(false); // Class<Object> logImpl = // sqlSessionFactory.getConfiguration().getTypeAliasRegistry().resolveAlias("SLF4J"); sqlSessionFactory.getConfiguration().setLogImpl(Slf4jImpl.class);// logImpl sqlSessionFactory.getConfiguration().setLogPrefix("###SPRING_BOOT###MYBATIS###"); sqlSessionFactory.getConfiguration().setDefaultExecutorType(ExecutorType.REUSE); sqlSessionFactory.getConfiguration().setUseGeneratedKeys(true); return sqlSessionFactory; }
@Bean @Scope(BeanDefinition.SCOPE_PROTOTYPE) // 多例? public SqlSessionTemplate sqlSessionTemplate() throws Exception { return new SqlSessionTemplate(this.sqlSessionFactory()); }
@Configuration @MapperScan(basePackages = { "com.expert.dao" }) public class DruidDataSourceConfig{ // ... }
@Bean public MapperScannerConfigurer mapperScannerConfigurer() { MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer(); mapperScannerConfigurer.setBasePackage(DaoBasePackage); mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory"); return mapperScannerConfigurer; }
原文:http://www.cnblogs.com/larryzeal/p/5874103.html