没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论


















从 iBatis 到 MyBatis,你准备好了吗?
对于从事 Java EE 的开发人员来说,iBatis 是一个再熟悉不过的持久层框架了,在 Hibernate、JPA 这样
的一站式对象 / 关系映射(O/R Mapping)解决方案盛行之前,iBaits 基本是持久层框架的不二选择。即
使在持久层框架层出不穷的今天,iBatis 凭借着易学易用、轻巧灵活等特点,也仍然拥有一席之地。尤其
对于擅长 SQL 的开发人员来说,iBatis 对 SQL 和存储过程的直接支持能够让他们在获得 iBatis 封装优势
的同时而不丧失 SQL 调优的手段,这是 Hibernate/JPA 所无法比拟的。具体而言,使用 iBatis 框架的主
要优势主要体现在如下几个方面:
首先,iBatis 封装了绝大多数的 JDBC 样板代码,使得开发者只需关注 SQL 本身,而不需要花费精力去
处理例如注册驱动,创建 Connection,以及确保关闭 Connection 这样繁杂的代码。
其次,iBatis 可以算是在所有主流的持久层框架中学习成本最低,最容易上手和掌握的框架。虽说其他持
久层框架也号称门槛低,容易上手,但是等到你真正使用时会发现,要想掌握并用好它是一件非常困难的
事。在工作中我需要经常参与面试,我曾听到过很多位应聘者描述,他们所在的项目在技术选型时选择
Hibernate,后来发现难以驾驭,不得不将代码用 JDBC 或者 iBatis 改写。
iBatis 自从在 Apache 软件基金会网站上发布至今,和他的明星兄弟们(Http
Server,Tomcat,Struts,Maven,Ant 等等)一起接受者万千 Java 开发者的敬仰。然而在今年六月中
旬,几乎是发布 3.0 版本的同时,iBatis 主页上的一则 “Apache iBATIS has been retired” 的声明在社区
引起了一阵不小的波澜。在 Apache 寄居六年之后,iBatis 将代码托管到 Google Code。在声明中给出的
主要理由是,和 Apache 相比,Google Code 更有利于开发者的协同工作,也更能适应快速发布。于此同
时,iBatis 更名为 MyBatis。
从 iBatis 到 MyBatis,不只是名称上的变化,MyBatis 提供了更为强大的功能,同时并没有损失其易用性,
相反,在很多地方都借助于 JDK 的泛型和注解特性进行了简化。iBatis 确实该退休了,因为一个更为出
色的继任者经过 10 个 Beta 版本的蜕变已然出现在我们的面前。
本文将主要针对 MyBatis 和 iBatis 的变化之处进行讨论,以便于读者顺利从 iBatis 向 MyBatis 过渡。
回页首
由一个 MyBatis 示例开始
如果读者接触过一些常用的 Java EE 框架,应该都知道这些框架需要提供一个全局配置文件,用于指定
程序正常运行所需的设置和参数信息。而针对常用的持久层框架而言(Hibernate、JPA、iBatis 等),则
通常需要配置两类文件:一类用于指定数据源、事务属性以及其他一些参数配置信息(通常是一个独立的
文件,可以称之为全局配置文件);另一类则用于指定数据库表和程序之间的映射信息(可能不止一个文
件,我们称之为映射文件)。MyBatis 也不例外,虽然其中的一部分可以通过注解的形式进行,但是这两
部分内容本身仍是必不可少的。
根据 iBatis 的习惯,我们通常把全局配置文件命名为 sqlMapConfig.xml,文件名本身并没有要求,在
MyBatis 中,也经常会将该文件命名为 Configuration.xml (读完全文后读者也许会发现,在 iBatis 中经
常出现的 “sqlMap” 在 MyBatis 中被逐渐淡化了,除了此处,还比如 iBatis 配置文件的根元素为
<sqlMapConfig>,指定映射文件的元素为 <sqlMap>,以及 SqlMapClient 等等,这个变化正说明,iBatis
仅是以 SQL 映射为核心的框架,而在 MyBatis 中多以 Mapper、Session、Configuration 等其他常用
ORM 框架中的名字代替,体现的无非是两个方面:首先是为了减少开发者在切换框架所带来的学习成本;
其次,MyBatis 充分吸收了其他 ORM 框架好的实践,MyBatis 现在已不仅仅是一个 SQL 映射框架了)。
在全局配置文件中可以配置的信息主要包括如下几个方面:
properties --- 用于提供一系列的键值对组成的属性信息,该属性信息可以用于整个配置文件中。
settings --- 用于设置 MyBatis 的运行时方式,比如是否启用延迟加载等。
typeAliases --- 为 Java 类型指定别名,可以在 XML 文件中用别名取代 Java 类的全限定名。

typeHandlers --- 在 MyBatis 通过 PreparedStatement 为占位符设置值,或者从 ResultSet 取出
值时,特定类型的类型处理器会被执行。
objectFactory --- MyBatis 通过 ObjectFactory 来创建结果对象。可以通过继承
DefaultObjectFactory 来实现自己的 ObjectFactory 类。
plugins --- 用于配置一系列拦截器,用于拦截映射 SQL 语句的执行。可以通过实现 Interceptor
接口来实现自己的拦截器。
environments --- 用于配置数据源信息,包括连接池、事务属性等。
mappers --- 程序中所有用到的 SQL 映射文件都在这里列出,这些映射 SQL 都被 MyBatis 管理。
上面提及的大多数元素都不是必需的,通常 MyBatis 会为没有显式设置的元素提供缺省值。一个简单的全
局配置文件示例如下:
清单 1. 简单的全局配置文件示例
和 !的全局配置文件使用不同的 ""约束,在将应用由
升级至 !时需要注意(两者的映射文件 ""约束也不相同)
"#$%&'()&*+$,,!-,,""$(.,,'/
012,,!-,,!-.(
()
配置数据源相关的信息
3)
!14"$,
5)!1&##*'"
11!)6,
11!))6,
11!)),
11!17),
,5)
,
,
列出映射文件
11
11)38,!-,,+3 11,
,11
,()
有了这些信息,MyBatis 便能够和数据库建立连接,并应用给定的连接池信息和事务属性。MyBatis 封装
了这些操作,最终暴露一个 SqlSessionFactory 实例供开发者使用,从名字可以看出来,这是一个创建
剩余7页未读,继续阅读
资源评论


weixin_42124516
- 粉丝: 0
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 物联网+智慧平台项目融资计划.pptx
- Sa-Token-Java资源
- 山东轻工业学院网络用户手册.doc
- 学习]网络营销的方法与策略.ppt
- 2023年西南大学网络与继续教育学院土木工程专业工程地质大作业答案3月.doc
- 构建身边的网络.pdf
- 综合布线资格认证.doc
- 我国银行财务管理信息化思考.doc
- (推荐下载)第二节--中国生物医学-文献数据库2013.5.2.docx
- 教育信息化校本培训方案.doc
- 楼宇自动化控制系统入门.ppt
- 胃肠道间质瘤GIST综合治疗经验分享.pptx
- ArcGIS影像配准及矢量化.doc
- 雅戈尔服饰有限公司营销网络建设项目建议书最终版.pptx
- java毕业设计,航空信息管理系统
- 项目管理部消防安全自查报告.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制
