mybatis中文版教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MyBatis Spring1.0.0-RC3
参考文档
MyBatis 社区()
Copyright © 2010
本文档的拷贝仅允许您个人使用或分发给其他用户,但是不能收取任何费用,后期的发布无论是印刷版或电子版,也会进行版权声明。
本文档由南磊(nanlei1987@)翻译
目录
第一章介绍 (3)
1.1 整合动机 (3)
1.2 要求 (3)
1.3 感谢 (3)
第二章入门 (4)
2.1 安装 (4)
2.2 快速创建 (4)
第三章SqlSessionFactoryBean (6)
3.1 创建 (6)
3.2 属性 (6)
第四章事务 (8)
4.1 标准配置 (8)
4.2 容器管理事务 (8)
第五章使用SqlSession (9)
5.1 SqlSessionSupport (9)
5.2 SqlSessionTemplate (9)
第六章MapperFactoryBean (11)
6.1 创建 (11)
6.2 注入映射器 (11)
6.3 自动配置 (12)
第七章使用MyBatis API (13)
第八章示例代码 (14)
第一章介绍
1.1 整合动机
正如第二版,Spring仅支持iBatis2。那么我们就想将MyBatis3的支持加入到Spring3.0(参考Spring的Jira的问题)中。不幸的是,Spring 3.0的开发在MyBatis 3.0官方发布前就结束了。因为Spring开发团队不想发布一个基于非发行版的MyBatis的整合支持,那么Spring 官方的支持就不得不等到至少3.1版本了。要在Spring中支持MyBatis,MyBatis社区认为现在应该是自己团结贡献者和有兴趣的人一起来开始进行Spring和MyBatis整合的时候了。
这个小类库就来创建丢失的粘贴Spring和MyBtatis这两个流行框架的胶水。减少用户不得不来配置MyBatis和Spring 3.X上下文环境的样板和冗余代码。它还透明地增加了Spring 对MyBatis事务的支持。
1.2 要求
在开始阅读本手册之前,很重要的一点是你要熟悉Spring和MyBatis这两个框架还有和它们有关的术语,本手册不会提供二者的背景内容,基本安装和配置教程。
和MyBatis一样,MyBatis-Spring也需要Java 5或更高版本。
1.3 感谢
非常感谢那些使得本项目成为现实的人们(按字母顺序排序)。Eduardo Macarron,Hunter Presnall和Putthibong Boonbong的编码工作,测试和文档修改;Andrius Juozapaitis,Giovanni Cuccu,Raj Nagappan和Tomas Pinos的贡献;而Simone Tripodi发现了这些人并把他们带入项目之中。没有他们的努力,这个项目是不可能存在的。
第二章 入门
MyBatis-Spring 帮助了你的MyBatis 代码和Spring 进行无缝整合。使用这个类库中的类,Spring 将会为你加载必要的MyBatis 工厂和session 类。这个小类库也会提供一个简便的方式向你的service 层bean 中注入MyBatis 的数据映射器。最终,MyBatis-Spring 将会控制事务,翻译MyBatis 异常到Spring 的DataAccessException 异常(数据访问异常,译者注)。
2.1 安装
要使用MyBatis-Spring 模块,你只需要包含mybatis-spring-1.0.0-RC3.jar 文件,并在类路径中加入依赖关系。
如果你使用Maven ,那么在pom.xml 中加入下面的代码即可:
2.2 快速创建
要和Spring 一起使用MyBatis ,你需要在Spring 应用上下文中定义至少两样东西:一个SqlSessionFactory 和至少一个数据映射器类。
在MyBatis-Spring
中,SqlSessionFactoryBean 是用于创建SqlSessionFactory .的。要配置这个工厂bean ,放置下面的代码在Spring 的XML 配置文件中: 要注意
SqlSessionFactory 需要一个DataSource .(数据源,译者注)。这可以是任意的DataSource .,配置它就和配置其它Spring
数据库连接一样。
假设你有一个如下编写的数据映射器类:
那么可以使用,像下面这样来把接口加入到Spring 中:
要注意指定的映射器类必须是一个接口,而不是具体的实现类。在这个示例中,注解被用来指定SQL语句,但是MyBatis的映射器XML文件也可以用。
一旦配置好,你可以以注入其它任意Spring的bean相同的方式直接注入映射器到你的business/service对象中。MapperFactoryBean控制SqlSession创建和关闭它。如果使用了Spring的事务,那么当事务完成时,session将会提交或回滚。最终,任何异常都会被翻译成Spring的DataAccessException异常。
调用MyBatis数据方法现在只需一行代码:
第三章 SqlSessionFactoryBean
在基本的MyBatis 中,session 工厂可以使用SqlSessionFactoryBuilder .来创建。在MyBatis-Spring 中,使用了SqlSessionFactoryBean 来替代。
3.1 创建
要创建工厂bean ,放置下面的代码在Spring 的XML 配置文件中:
要注意SqlSessionFactoryBean 实现了Spring 的FactoryBean 接口(请参考Spring 文档的3.8章节部分)。这就说明Spring
最终创建的bean 不是SqlSessionFactoryBean 本身完成的,但是工厂类getObject()返回的方法的结果是基于那个类的。这种情况下,Spring 将会在应用启动时为你创建SqlSessionFactory 对象,然后将它以SqlSessionFactory 为名来存储。在Java 中,相同的代码是:
在普通的MyBatis-Spring 用法中,你不需要使用SqlSessionFactoryBean 或直接和其对应的SqlSessionFactory 。而session 工厂将会被注入到MapperFactoryBean 中或其它扩展了SqlSessionDaoSupport 的DAO (Data Access Object ,数据访问对象,译者注)中。
3.2 属性
SqlSessionFactory 有一个必须的属性,就是JDBC 的DataSource 。这可以是任意的DataSource ,配置和其它的Spring 数据库连接是一样的。
一个通用的属性是configLocation ,它是用来指定MyBatis 的XML 配置文件路径的。如果基本的MyBatis 配置需要改变,那么这就是一个需要它的地方。通常这会是
要注意这个配置文件不需要是一个完整的MyBatis 配置。确定地来讲,任意环境,数据源和MyBatis 的事务管理器都会被忽略。SqlSessionFactoryBean 会创建它自己的,使用这些值定制MyBatis 的Environment 时是需要的。
如果MyBatis 映射器XML 文件在和映射器类相同的路径下不存在,那么另外一个需要配置文件的原因就是它了。使用这个配置,有两种选择。第一是手动在MyBatis 的XML 配置文件中使用
mapperLocations 属性一个资源位置的list 。这个属性可以用来指定MyBatis 的XML 映射器文件的位置。它的值可以包含Ant 样式来加载一个目录中所有文件,或者从基路径下递归搜索所有路径。比如: