码迷,mamicode.com
首页 > 编程语言 > 详细

MyBatis-Spring 使用总结

时间:2016-09-15 06:11:38      阅读:687      评论:0      收藏:0      [点我收藏+]

标签:

说明:基于 Java-Config来配置。

不是通过mybatis的SqlSessionFactoryBuilder来创建SqlSessionFactory,而是通过mybatis-Spring的SqlSessionFactoryBean来获取。

1、Anyway,首先要有一个DataSource。
需要注意,事务管理器也在这里注册。(mybatis-spring插件会自动调用该事务管理器)  
    @Bean(name = "transactionManager")
    public DataSourceTransactionManager dataSourceTransactionManager() {
        DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
        dataSourceTransactionManager.setDataSource(this.dataSource());
        return dataSourceTransactionManager;
    }
 
2、然后,注册SqlSessionFactoryBean。如下:
    @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;
    }
这里还设置了一堆参数。需要注意的是,
①设置了 TypeAliasesPackage 。
②设置了 Configuration 。
③mybatis-spring会自动创建 Configuration 对象,所以通过 sqlSessionFactory.getConfiguration() 即可获取并进行设置。
 
3、再注册一个 SqlSessionTemplate,这是mybatis-spring的核心。
    @Bean
    @Scope(BeanDefinition.SCOPE_PROTOTYPE) // 多例?
    public SqlSessionTemplate sqlSessionTemplate() throws Exception {
        return new SqlSessionTemplate(this.sqlSessionFactory());
    }
 
4、设置mapper的位置,有两种方法。
①推荐这种,简单。
@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;
    }

 

至此,已可以成功运行。
 
但是,还有更简单的方法,那就是 MyBatis-Spring-Boot-Starter 。使用该Starter时,会自动查找DataSource,并自动创建SqlSessionFactoryBean 和 SqlSessionTemplate。所以,只需要设置mapper所在的位置和别名所在的包即可。
 
 

 
 
 

MyBatis-Spring 使用总结

标签:

原文地址:http://www.cnblogs.com/larryzeal/p/5874103.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!