说明:Java-based Config。

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

1、首先要有一个DataSource
需要注意,事务管理器也在这里注册。(mybatis-spring插件会自动调用该事务管理器)  
  1. @Bean(name = "transactionManager")
  2. public DataSourceTransactionManager dataSourceTransactionManager() {
  3. DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
  4. dataSourceTransactionManager.setDataSource(this.dataSource());
  5. return dataSourceTransactionManager;
  6. }
 
2、然后,注册SqlSessionFactoryBean(或者SqlSessionFactory,二选一,内容一致)。如下:
  1. @Bean(name = "sqlSessionFactory")
  2. public SqlSessionFactory sqlSessionFactory() throws Exception {
  3. SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
  4. sqlSessionFactoryBean.setDataSource(this.dataSource());
  5. // sqlSessionFactoryBean.setConfigLocation(new ClassPathResource("mybatis-config.xml")); // 这里可以通过mybatis-config.xml 来设置 typeAliasPackage和mapper。
  6. // Resource[] mapperLocations = new Resource[] { new ClassPathResource("com.expert.dao") }; // 这个和@MapperScan冲突吗?这个设置有问题。
  7. // sqlSessionFactoryBean.setMapperLocations(mapperLocations);//<mappers>
  8. sqlSessionFactoryBean.setTypeAliasesPackage(PojoBasePackage);
  9. // sqlSessionFactoryBean.setCache(cache);
  10. SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBean.getObject();
  11. // It can be specified a Configuration instance directly without MyBatis XML configuration file.
  12. sqlSessionFactory.getConfiguration().setMapUnderscoreToCamelCase(true);// 开启驼峰映射
  13. sqlSessionFactory.getConfiguration().setCacheEnabled(true);
  14. sqlSessionFactory.getConfiguration().setLazyLoadingEnabled(true);
  15. sqlSessionFactory.getConfiguration().setAggressiveLazyLoading(false);
  16. // Class<Object> logImpl = sqlSessionFactory.getConfiguration().getTypeAliasRegistry().resolveAlias("SLF4J");
  17. sqlSessionFactory.getConfiguration().setLogImpl(Slf4jImpl.class);// logImpl
  18. sqlSessionFactory.getConfiguration().setLogPrefix("###SPRING_BOOT###MYBATIS###");
  19. sqlSessionFactory.getConfiguration().setDefaultExecutorType(ExecutorType.REUSE);
  20. sqlSessionFactory.getConfiguration().setUseGeneratedKeys(true);
  21. return sqlSessionFactory;
  22. }
这里还设置了一堆参数。需要注意的是,
①设置了 TypeAliasesPackage 
②设置了 Configuration 。
③mybatis-spring会自动创建 Configuration 对象,所以通过 sqlSessionFactory.getConfiguration() 即可获取并进行设置。
 
3、再注册一个 SqlSessionTemplate,这是 mybatis-spring 的核心。
  1. @Bean
  2. @Scope(BeanDefinition.SCOPE_PROTOTYPE) // 多例?
  3. public SqlSessionTemplate sqlSessionTemplate() throws Exception {
  4. return new SqlSessionTemplate(this.sqlSessionFactory());
  5. }
 
4、设置mapper的位置,有两种方法。
①推荐这种,简单。
  1. @Configuration
  2. @MapperScan(basePackages = { "com.expert.dao" })
  3. public class DruidDataSourceConfig{
  4. // ...
  5. }
  1. @Bean
  2. public MapperScannerConfigurer mapperScannerConfigurer() {
  3. MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
  4. mapperScannerConfigurer.setBasePackage(DaoBasePackage);
  5. mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
  6. return mapperScannerConfigurer;
  7. }
至此,已可以成功运行。
 
但是,还有更简单的方法,那就是 MyBatis-Spring-Boot-Starter 。使用该Starter时,会自动查找DataSource,并自动创建SqlSessionFactoryBean 和 SqlSessionTemplate。所以,只需要设置mapper所在的位置和别名所在的包即可。
 
 

 
 
 

MyBatis-Spring 使用总结的更多相关文章

  1. spring3.0+mybatis+spring快速入门

    一.首先奉上项目目录结构: 说明: dao,mapping,model包下的所有内容可以使用Generator工具自助生成. 具体用法,可以网上学习一下,比较简单,主要做以下工作: 1.提供相关的数据 ...

  2. 疑惑的 java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()L

    在MAVEN项目里面,在整合spring和mybatis在执行数据库操作的时候报出了: java.lang.AbstractMethodError: org.mybatis.spring.transa ...

  3. springMVC+mybatis+spring整合案例

    1.web.xml a:配置spring监听,使web容器在启动时加载spring的applicationContext.xml <listener> <listener-class ...

  4. SpringMVC+Mybatis+Spring整合

    Maven引入需要的JAR包 pom.xml <properties> <!-- spring版本号 --> <spring.version>4.0.2.RELEA ...

  5. MyBatis学习(一)、MyBatis简介与配置MyBatis+Spring+MySql

    一.MyBatis简介与配置MyBatis+Spring+MySql 1.1MyBatis简介 MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架.MyBatis 摒除了大部分的J ...

  6. myBatis,Spring,SpringMVC三大框架ssm整合模板

    整合步骤 创建web工程 导入整合所需的所有jar包 编写各层需要的配置文件 1) mybatis的全局配置文件 <configuration>    <!-- 批量别名的设置 -- ...

  7. 多个mapper location时, mybatis spring的自动扫描配置

    1. MapperScannerConfigurer 里面的basePackage, 多个package用逗号分隔 2. SqlSessionFactoryBean里面的mapperLocations ...

  8. MyBatis详解 与配置MyBatis+Spring+MySql

    MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架.MyBatis 摒除了大部分的JDBC代码.手工设置参数和结果集重获.MyBatis 只使用简单的XML 和注解来配置和映射基本 ...

  9. Springmvc + mybatis + spring 配置,spring事物

    今天配置了半天,发现,事物不起效果,主要出现如下错误: org.mybatis.spring.transaction.SpringManagedTransaction] - [JDBC Connect ...

  10. Maven+druid+MyBatis+Spring+Oracle+Dubbo开发环境搭建

    1.开发工具使用: MyEclipse或Eclipse,数据库使用Oracle.需要用到的软件有Zookeeper(注册中心),Tomcat(Web容器)和Maven(包管理). 2.初始环境配置: ...

随机推荐

  1. 推送未找到应用程序的“aps-environment”的权利字符串错误

    一:使用百度推送,或是苹果自带的推送出,才配置好anps-cer文件之后,出现错误 推送未找到应用程序的“aps-environment”的权利字符串错误 二:错误原因: 此原因是配置好推送证书之后, ...

  2. 【PAT】1028. List Sorting (25)

    题目链接:http://pat.zju.edu.cn/contests/pat-a-practise/1028 题目描述: Excel can sort records according to an ...

  3. 显示游戏FPS帧率的几种计算方式

    FPSDisplay.cs using UnityEngine; using System.Collections; public class FPSDisplay : MonoBehaviour { ...

  4. Xcode 生成 ipa包

    原地址:http://zengwu3915.blog.163.com/blog/static/2783489720136213239916/ app store的审核收费的需要二周,免费的需要一个月左 ...

  5. 学习使用Jmeter做压力測试(一)--压力測试基本概念

    一.性能測试的概念         性能測试是通过自己主动化的測试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行測试.负载測试和压力測试都属于性能測试,两者能够结合进行. 通过负载測试, ...

  6. No implementation found for long com.baidu.platform.comjni.map.commonmemcache.JNICommonMemCache.Create()

    3-21 10:14:20.833 2892-2892/? E/art: No implementation found for long com.baidu.platform.comjni.map. ...

  7. Java之字节码(3) - 简单介绍

    转载来自 首先了解一下理论知识: 字节码: Class文件是8位字节流,按字节对齐.之所以称为字节码,是因为每条指令都只占据一个字节,所有的操作码和操作数都是按字节对齐的.如:0×03表示iconst ...

  8. TCP 中出现RST的情况

    http://www.360doc.com/content/13/0702/10/1073512_297069771.shtml 原 几种TCP连接中出现RST的情况 发表于1年前(2013-05-0 ...

  9. vnc/route/ifconfig 配置

    重启网卡的方法: 1 network 利用root帐户 # service network restart ############################################## ...

  10. 〖Linux〗不知谁写的,很实用的Linux命令

    第一部分 . sudo 运行上一条命令 sudo !! . HTTP方式共享当前目录 python -m SimpleHTTPServer . vim保存一个root用户文件 :w !sudo tee ...