mybatis-spring 项目简介
mybatis-spring 主要是为了解决 spring3.0 中支持 mybatis3.0
1 mybatis-spring 主要包含以下几个部分
- 数据源
- SqlSessionFactory
- SqlSessionTemplate
- Mapper
- 事务处理
在mybatis中构建 SqlSessionFactory 对象,让它来产生 SqlSession, 在 mybatis-spring 项目中 SqlSession 是通过SqlSessionTemplate 来实现的,它提供了对SqlSession 的封装。
所以通过 SqlSessionTemplate 可以得到 Mapper。
2 构建 SqlSessionFactory ,它的作用是生成 SqlSession 。一般地,只需配置两个参数 1)数据源 2)mybatis 配置文件路径
3 配置 SqlSessionTemplate ,是一个模板类,通过调用 SqlSession 来完成工作,所以在 mybatis-spring 项目中,它是一个核心类。
构建方法有两种
1)只有一个参数 SqlSessionFactory
2)两个参数 一个是 SqlSessionFactory 另一个是执行器类型。
方法一,代码如下
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="" ref="sqlSessionFactory"/>
</bean>
方法二,两个参数
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="" ref="sqlSessionFactory"/>
<constructor-arg index="" value="BATCH"/>
</bean>
ExecutorType 的取值范围是:SIMPLE/REUSE/BATCH
如果同时设置了SqlSessionFactory 和 SqlSessionTemplate ,系统会使 SqlSessionTemplate 覆盖掉 SqlSessionFactory 。
4 配置 Mapper ,大部分场景中不建议使用 SqlSessionFactory 和 SqlSessionTemplate。而采用Mapper 接口编程的方式。关键类:MapperFactoryBean
在 mybatis 中,Mapper只是一个接口,而不是一个实现类。它是由 mybatis 通过动态代理的形式生成代理对象去运行,spring 没有办法生成实现类。
mybatis-spring 提供了 MapperFactoryBean 作为中介,可以配置他来获得我们需要的 Mapper。配置 MapperFactoryBean 有3个参数 MapperInterface,SqlSessionFactory,SqlSessionTemplate
- MapperInterface,用来定制接口,当我们的接口继承了配置的接口,那么 Mybatis 就认为他是一个Mapper
- SqlSessionFactory,当 SqlSessionTemplate 没有配置的时候,mybatis-spring 才会去设置它
- SqlSessionTemplate,当被设置的时候,SqlSessionFactory 失效。
4.2 使用扫描的方式配置Mapper,关键类:MapperScannerConfigurer,他的可配属性
- basePackage,spring自动扫描的包,会自动扫描子包
- annotationClass,表示类只有被这个注解标注才进行扫描
- sqlSessionFactoryBeanName,指定spring 中定义 sqlSessionFactory bean名称。如果被定义,sqlSessionFactory 将不起作用。
- sqlSessionTemplateBeanName,指定spring 中定义 sqlSessionTemplate bean名称。如果被定义,sqlSessionFactoryBeanName 将不起作用。
- markerInterface,指定实现了什么接口就认为是 Mapper。
注 意 , 没 有 必 要 去 指 定 SqlSessionFactory 或 SqlSessionTemplate , 因 为 MapperScannerConfigurer 将会创建 MapperFactoryBean,之后自动装配。但是,如果你使 用了一个 以上的 DataSource ,那 么自动 装配可 能会失效 。这种 情况下 ,你可 以使用 sqlSessionFactoryBeanName 或 sqlSessionTemplateBeanName 属性来设置正确的 bean 名 称来使用。这就是它如何来配置的,注意 bean 的名称是必须的,而不是 bean 的引用,因 此,value 属性在这里替代通常的 ref 。
5 配置事务,spring 和 mybatis结合后,是使用Spring AOP 去管理事务的。配置也很简单。
<!-- 支持注解 -->
<context:annotation-config/> <!-- 事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean> <!-- 声明式事务 -->
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
mybatis-spring 项目简介的更多相关文章
- MyBatis学习(一)、MyBatis简介与配置MyBatis+Spring+MySql
一.MyBatis简介与配置MyBatis+Spring+MySql 1.1MyBatis简介 MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架.MyBatis 摒除了大部分的J ...
- 一、MyBatis简介与配置MyBatis+Spring+MySql
//备注:该博客引自:http://limingnihao.iteye.com/blog/106076 1.1MyBatis简介 MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架 ...
- MyBatis学习 之 一、MyBatis简介与配置MyBatis+Spring+MySql
目录(?)[-] 一MyBatis简介与配置MyBatisSpringMySql MyBatis简介 MyBatisSpringMySql简单配置 搭建Spring环境 建立MySql数据库 搭建My ...
- MyBatis简介与配置MyBatis+Spring+MySql
MyBatis学习 之 一.MyBatis简介与配置MyBatis+Spring+MySql MyBatis学习 之 二.SQL语句映射文件(1)resultMap MyBatis学习 之 二.SQL ...
- spring boot+mybatis+quartz项目的搭建完整版
1. 利用spring boot提供的工具(http://start.spring.io/)自动生成一个标准的spring boot项目架构 2. 因为这里我们是搭建spring boot+mybat ...
- spring springmvc mybatis maven 项目整合示例-导航页面
spring原理 实践解析-简单的helloworld spring原理案例-基本项目搭建 01 spring framework 下载 官网下载spring jar包 spring原理案例-基本项目 ...
- IntelliJ IDEA 创建Spring+SpringMVC+mybatis+maven项目
参考自:https://www.cnblogs.com/hackyo/p/6646051.html 第一步: 创建maven项目 输入项目名和工程id 选择maven 默认就可以了 刚开始时间比较长, ...
- springmvc+spring+mybatis+maven项目构建
1.首先在myeclipse10中安装maven的插件,将插件放入D:\Program Files (x86)\myEclipse10\MyEclipse Blue Edition 10\dropin ...
- 一键生成Spring MVC + MyBatis + maven项目
首先创建一个新的maven项目,在src/main/java创建一个类Test 然后在Test复制以下代码: import java.io.*; import java.sql.Connection; ...
- spring Boot + MyBatis + Maven 项目,日志开启打印 sql
在 spring Boot + MyBatis + Maven 项目中,日志开启打印 sql 的最简单方法,就是在文件 application.properties 中新增: logging.leve ...
随机推荐
- Eclipse 结合Tomcat开发Web应用
第一部分 配置Tomcat 先到Apache官方网站下载Tomcat:http://tomcat.apache.org/. 但是在你下载Tomcat时,首选确定你的Eclipse支持的Tomcat版 ...
- 安装完Framework后如何不重启系统?
在.net平台下客户端部署时,如果客户端没有安装Framework时,部署程序安装Framework后,有一个要求重启选项,当然是非强制的.如果不想出现这个提示“重启”选项,可以做如下选择: 1.启动 ...
- sessionid与cookie
转自:http://smiky.iteye.com/blog/649164 发现自己真的是很笨,过去一直用jsp,从来不用怕心用户信息放在session里面会找不到,现在不用jsp,前台全用html, ...
- Linux环境MySQL集群配置
一.介绍 ======== 这篇文档旨在介绍如何安装配置基于2台服务器的MySQL集群.并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行. 注意! 虽 然这是基于2台服务器的MySQL ...
- 数学图形(1.28) EPI线
貌似由双曲线组成的图形.有时会像个自行车的轮子. 相关软件参见:数学图形可视化工具,使用自己定义语法的脚本代码生成数学图形.该软件免费开源.QQ交流群: 367752815 #http://www.m ...
- Orchard运用 - 导入旧随笔导致归档的问题
归档功能对于一个博客App这应该必须有的需求,故此Orchard中博客模块默认实现这一特性并通过一个叫"Blog Archives" widget, 你可以将其安装博客主页的侧边栏 ...
- 如何在CentOS 7中添加新磁盘而不用重启系统
导读 对大多数系统管理员来说扩充 Linux 服务器的磁盘空间是日常的工作之一.因此这篇文章会通过使用 Linux 命令,在 CentOS 7 系统上演示一些简单的操作步骤来扩充您的磁盘空间而不需要重 ...
- Virtualbox中Linux添加新磁盘并创建分区
原文:https://www.linuxidc.com/Linux/2017-01/139616.htm ----------------------------------------------- ...
- 【python】下载网络文件到本地
# 下载网络图片文件到本地 import urllib.request rsp=urllib.request.urlopen("http://n.sinaimg.cn/ent/transfo ...
- (剑指Offer)面试题49:把字符串转换为整数
题目: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 思路: 考虑+.-.空格.非数字字符,以及溢出问题 代码: #include <iostream> using n ...