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