目录
第一章 介绍 .................................................................................................................... 3
1.1 什么是 MyBatis-Spring? ...................................................................................... 3
1.2 整合动机 ............................................................................................................ 3
1.3 要求 ................................................................................................................... 3
1.4 感谢 ................................................................................................................... 3
第二章 入门 .................................................................................................................... 4
2.1 安装 ................................................................................................................... 4
2.2 快速创建 ............................................................................................................ 4
第三章 SqlSessionFactoryBean ........................................................................................... 6
3.1 创建 ................................................................................................................... 6
3.2 属性 ................................................................................................................... 6
第四章 事务 .................................................................................................................... 8
4.1 标准配置 ............................................................................................................ 8
4.2 容器管理事务 ..................................................................................................... 8
4.3 编程式事务管理 .................................................................................................. 9
第五章 使用 SqlSession................................................................................................... 10
5.1 SqlSessionTemplate ............................................................................................. 10
5.2 SqlSessionSupport ............................................................................................... 11
第六章 注入映射器 ........................................................................................................ 13
6.1 MapperFactoryBean ............................................................................................ 13
6.2 MapperScannerConfigurer.................................................................................... 14
第七章 使用 MyBatis API................................................................................................. 15
第八章 示例代码 ........................................................................................................... 16
第一章 介绍
1.1 什么是 MyBatis-Spring?
MyBatis-Spring 帮助你无缝地整合 MyBatis 代码到 Spring 中。使用这个类库中的类,Spring
将会加载必要的 MyBatis 工厂类和 session 类。这个类库也提供一个简单的方式来注入
MyBatis 数据映射器和 SqlSession 到业务层的 bean 中。而且它也会处理事务,翻译 MyBatis
异常到 Spring 的 DataAccessException 异常(数据访问异常,译者注)。最终,它不依赖于
MyBatis,Spring 或 MyBatis-Spring 来构建应用程序代码。
1.2 整合动机
正如第二版,Spring 3.0 仅支持 iBatis2。那么,我们就想将 MyBatis3 的支持添加到 Spring3.0
(参考 Spring 的 Jira 的问题)中。不幸的是,Spring 3.0 的开发在 MyBatis 3.0 官方发布前就
结束了。因为 Spring 开发团队不想发布一个基于非发行版的 MyBatis 的整合支持,那么 Spring
官方的支持就不得不继续等待了。要在 Spring 中支持 MyBatis,MyBatis 社区认为现在应该
是自己团结贡献者和有兴趣的人一起来开始将 Spring 的整合作为 MyBatis 社区的子项目的时
候了。
1.3 要求
在开始使用 MyBatis-Spring 整合之前,很重要的一点是你要熟悉 Spring 和 MyBatis 这两
个框架还有和它们有关的术语,本手册不会提供二者的背景内容,基本安装和配置教程。
像 MyBatis 和 Spring 3.0 一样,MyBatis-Spring 也需要 Java 5 或更高版本。
1.4 感谢
特别感谢那些使得本项目成为现实的人们(按字母顺序排序)。Eduardo Macarron,
Hunter Presnall和Putthibong Boonbong的编码,测试和文档修改工作;Andrius Juozapaitis,
Giovanni Cuccu,Raj Nagappan和Tomas Pinos的贡献;而Simone Tripodi发现了这些人并
把他们带入项目之中。没有他们的努力,这个项目是不可能存在的。
第二章 入门
本章将会以简略的步骤告诉你如何安装和创建 MyBatis-Spring 并构建一个简单的数据访
问事务性的应用程序。
2.1 安装
要使用 MyBatis-Spring 模块,你只需要包含 mybatis-spring-1.0.0.jar 文件,并在类
路径中加入依赖关系。
如果你使用 Maven,那么在 pom.xml 中加入下面的代码即可:
2.2 快速创建
要和 Spring 一起使用 MyBatis,你需要在 Spring 应用上下文中定义至少两样东西:一个
SqlSessionFactory 和至少一个数据映射器类。
在 MyBatis-Spring 中,SqlSessionFactoryBean 是用于创建 SqlSessionFactory 的。要
配置这个工厂 bean,放置下面的代码在 Spring 的 XML 配置文件中:
要注意 SqlSessionFactory 需要一个 DataSource(数据源,译者注)。这可以是任意
的 DataSource,配置它就和配置其它 Spring 数据库连接一样。
假设你有一个如下编写的数据映射器类:
那么可以使用 MapperFactoryBean,像下面这样来把接口加入到 Spring 中:
要注意指定的映射器类
必须
是一个接口,而不是具体的实现类。在这个示例中,注解被
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.0.0</version>
</dependency>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{userId}")
User getUser(@Param("userId") String userId);
}
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean ">
<property name="mapperInterface" value="org.mybatis.spring.sample.mapper.UserMapper" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
用来指定 SQL 语句,但是 MyBatis 的映射器 XML 文件也可以用。
一旦配置好,你可以用注入其它任意 Spring 的 bean 相同的方式直接注入映射器到你的
business/service 对象中。MapperFactoryBean 处理 SqlSession 的创建和关闭它。如果使用
了 Spring 的事务,那么当事务完成时,session 将会提交或回滚。最终,任何异常都会被翻
译成 Spring 的 DataAccessException 异常。
调用 MyBatis 数据方法现在只需一行代码:
public class FooServiceImpl implements FooService {
private UserMapper userMapper;
public void setUserMapper(UserMapper userMapper) {
this.userMapper = userMapper;
}
public User doSomeBusinessStuff(String userId) {
return this.userMapper.getUser(userId);
}
}