MyBatis
MyBatis
MyBatis
MyBatis 3
3
3
3 用户指南中文版
MyBatis
MyBatis
MyBatis
MyBatis 3.0.1
3.0.1
3.0.1
3.0.1
曾令祝
2010.06.15
MyBatis 3 用户指南中文版
曾令祝
2
2
2
2
目录
第一章 什么是 MyBatis ....................................................................................................................... 3
第二章 入门 ........................................................................................................................................ 4
一、从 XML 中创造 SqlSessionFactory ........................................................................................... 4
二、不使用 XML 文件新建 SqlSessionFactory ................................................................................ 5
三、使用 SqlSessionFactory 获取 SqlSession ................................................................................... 5
四、探究 SQL 映射语句 ................................................................................................................ 6
五、作用域和生命周期 ................................................................................................................. 7
1 . SqlSessionFactoryBuilder .................................................................................................. 7
2 . SqlSessionFactory ............................................................................................................ 7
3 . SqlSession ....................................................................................................................... 7
4 . Mapper 实例 ................................................................................................................... 8
第三章 Mapper 的 XML 配置文件 ........................................................................................................ 9
一、属性( properties ) ................................................................................................................. 9
二、设置( settings ) ................................................................................................................... 10
三、类型别名( typeAliases ) ...................................................................................................... 11
四、类型句柄( typeHandlers ) .................................................................................................... 12
五、对象工厂( ObjectFactory ) .................................................................................................. 13
六、插件( plugins ) ................................................................................................................... 14
七、环境( environments ) .......................................................................................................... 15
八、映射器( Mappers ) .............................................................................................................. 18
第四章 SQL 映射语句文件 ................................................................................................................. 19
一、 select ................................................................................................................................... 19
二、 insert, update, delete .............................................................................................................. 20
三、 SQL ..................................................................................................................................... 23
四、参数( parameters ) .............................................................................................................. 23
五、 resultMap ............................................................................................................................. 25
六、缓存( cache ) ..................................................................................................................... 37
七、 cache-ref 缓存引用 ............................................................................................................... 39
第五章 动态语句 ............................................................................................................................... 40
if
................................................................................................................................................ 40
choose, when, otherwise ................................................................................................................ 41
trim, where, set ............................................................................................................................. 41
foreach ........................................................................................................................................ 43
第六章 Java API ................................................................................................................................. 45
一、目录结构 ............................................................................................................................. 45
二、 SqlSessions ........................................................................................................................... 46
三、 SqlSession ............................................................................................................................ 49
第七章 SelectBuilder .......................................................................................................................... 55
第八章 SqlBuilder .............................................................................................................................. 58
第九章 说明 ...................................................................................................................................... 59
MyBatis 3 用户指南中文版
曾令祝
3
3
3
3
第一章 什么是 MyBatis
MyBatis
MyBatis
MyBatis
MyBatis 世界上流行最广泛的 SQL 映射框架 , 由 Clinton Begin 在 2002 年创建 , 其后 , 捐献给了 Apach e
基金会,成立了 iBatis 项目。 2010 年 5 月,将代码库迁致 Google Code ,并更名为 MyBatis 。
关于以前的版本,请访问 http://ibatis.apache.org/
关于更名后最新的版本,请访问: http://code.google.com/p/mybatis/
MyBatis 是一个可以自定义 SQL 、存储过程和高级映射的持久层框架。 MyBatis 摒除了大部分的 JDB C
代码、手工设置参数 和 结果集重获。 MyBatis 只使用简单的 XML 和注解来配置 和 映射 基本数据类型
、
Map 接口和 POJO 到数据库记录。
MyBatis 3 用户指南中文版
曾令祝
4
4
4
4
第二章 入门
每一个 MyBatis 应该都是以一个 SqlSessionFactory 实例为中心。一个 SqlSessionFactory 实例可以使 用
SqlSessionFactoryBuilder 来创造 。 从配置类中创造的定制 SqlSessionFactoryBuilder 实例 , 可以使用 XM
L
配置文件来生成一个 SqlSessionFactory 实例。
一、从 XML
XML
XML
XML 中创造 SqlSessionFactory
SqlSessionFactory
SqlSessionFactory
SqlSessionFactory
从 XML 文件中创造 SqlSessionFactory 实例是非常简单的。推荐使用一个类路径资源来进行配置,你也
可以使用一个 Reader 实例,甚至使用 URL 路径。
MyBatis 有一个 Resources 通用类,类中有许多方法可以简单地从类路径和其他地址中加载资源。
String resource = "org/mybatis/example/Configuration.xml";
Reader reader = Resources.getResourceAsReader(resource);
sqlMapper = new SqlSessionFactoryBuilder().build(reader);
XML 文件包含了许多 MyBatis 的核心设置,包括一个获取数据库连接( Connection )实例的数据源
( DataSource ) , 和一个决定事务作用域和操作的 TransactionManager 。 全部的 XML 配置文件的内容将在
以后提到,先给出一个简单的样子。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
XML 配置文件中还有其它许多内容,上面的例子只是指出了最重要的部分。注意这个 XML 的标头 , 需
要一个 DTD 验证文档。 environment 项里包含了事务管理和连接池的环境配置。 mappers 项中包含了一
系列 SQL 语句映射定义的 XML 文件。
MyBatis 3 用户指南中文版
曾令祝
5
5
5
5
二、不使用 XML
XML
XML
XML 文件新建 SqlSessionFactory
SqlSessionFactory
SqlSessionFactory
SqlSessionFactory
如果你更想直接使 用 Jav a 语言而不 是 XM
L
来生成这些配置 , 更或者你想使用自己的配置生成器 , MyBati s
提供了一个完整的配置类来完成 XML 文件一样的配置。
DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment environment =
new Environment("development", transactionFactory, dataSource);
Configuration configuration = new Configuration(environment);
configuration.addMapper(BlogMapper.class);
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(configuration);
这个配置里 , 加载了一个映射类 。 映射类是包含了 SQL 映射注解的 Java 类 , 可以用来取代 XML 。 然而
,
由于 Java 注解的一些限制和 MyBatis 映射的复杂性,一些高级的映射还是要用 XML 来配置,比如嵌套
映射等 。 由于这个原因 , MyBati s 会自动查找和加载已经存在 的 XML 。 比如说上面的代码 , BlogMapper.xm
l
将会被类路径中 BlogMapper.class 加载。以后会详细讨论这些。
三、使用 SqlSessionFactory
SqlSessionFactory
SqlSessionFactory
SqlSessionFactory 获取 SqlSession
SqlSession
SqlSession
SqlSession
假设你有一个 SqlSessionFactory , 你就可以来获取一个 SqlSession 实例 , SqlSession 包含了针对数据库执
行语句的每一个方法。你可以直接使用 SqlSession 执行已经映射的每一个 SQL 语句。比如:
SqlSession session = sqlMapper.openSession();
try {
Blog blog = (Blog) session.select(
"org.mybatis.example.BlogMapper.selectBlog", 101);
} finally {
session.close();
}
上述步骤对于使用 MyBatis 的上一个版本 ( 即 iBatis 2 ) 的用户来说比较熟悉 。 现在 , 有一个更加清晰的
方式。使用一个有正确参数和返回值的接口,你就可以更加清晰和安全地编写代码,从而避免出错 。 像
这样:
SqlSession session = sqlSessionFactory.openSession();
try {
BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);
} finally {
session.close();
}
现在,让我们开始探究一下步骤的执行细节。
- 1
- 2
前往页