一、iBatis简单介绍
iBatis是又一个O/R Mapping解决方案,j2ee的O/R方案真是多,和Hibernate相比,iBatis最大的特点就是小巧,上手很快。如果你不需要太多复杂的功能,iBatis是能满足你的要求又足够灵活的最简单的解决方案。
iBatis简单灵活,上手容易,代码很少,配置稍嫌复杂。不足之处一是没有方便的工具来自动生成xml配置文件,二是不管是query还是insert都只能传入一个参数,有时不得不把两个参数包装成一个类传进去。另外对常见的1:1,1:N关系的支持不如Hibernate。不过,大多数时候iBatis已经完全可以满足我们的需求。Spring很好的集成了iBatis,你可以参考Spring的JPetStore示例。需要注意的是使用iBatis 2.0和1.0有较大区别,主要体现在配置文件上,iBatis 2.0新增了DAO框架,不需要Spring提供的DAO也能很方便地实现DAO模式。
iBATIS与普通的OO/RM的不同:它不是直接把类映射为数据库表或者说把类的字段映射为数据库列,而是把SQL语句的参数与结果(也即输入和输出)映射为类。正如你在本书的剩余部分中将会学到的,iBATIS在类和数据库表之间建立了一个额外的间接层,这就为如何在类和数据库表之间建立映射关系带来了更大的灵活性,使得在不用改变数据模型或者对象模型的情况下改变它们的映射关系成为可能。其实我们这里讨论的这个间接层就是SQL。SQL这个额外的间接层使得iBATIS能够更好地隔离数据库设计和应用中使用的对象模型。这就使得它们两者之间的相关性能够降至最少。图2-2展示了iBATIS如何使用SQL映射数据。
[img]http://qingfeng825.iteye.com/upload/picture/pic/10994/b2621326-84c2-3aee-bd32-946fb5fe0881.gif [/img]
正如你在上图中所看到的,iBATIS的映射层其实就是SQL。iBATIS让你自己写SQL语句,iBATIS负责在类的字段和数据库表的列之间映射参数和结果。基于这个原因,也考虑到与其他各种各样的映射方式的区分,为避免混淆,iBATIS小组通常将所谓的“数据映射器”称为SQL映射器(SQL mapper)
二、映射SQL语句
任何一条SQL语句都可以看作是一个函数,有输入输出集合。输入即参数(parameter),通常可以在SQL语句的WHERE子句中找到。输出则是SELECT子句中指定的那些列。图2-3描述了这个思想。
图2-3 SQL语句可以被看作一个包含输入输出的函数
这种方式的最大优点就在于SQL语句使得开发者能够自己把握巨大的灵活性。他可以在不改变数据模型的前提下轻易地操纵数据以适应对象模型。甚至,开发者还可以通过数据库内建的函数和存储过程引入多表和结果集。总之,他们可以随心所欲地利用SQL的强大能力。
iBATIS使用一个简单的XML描述文件来映射SQL语句的输入和输出。代码清单2-1给出了一个这样的例子。
代码清单2-1 一个SQL映射的例子
从以上代码中我们看到了一条SELECT语句,它返回address表中的数据。从<select>元素的parameterClass属性中我们可以看出该语句使用一个Integer对象作为参数,该参数是通过WHERE子句中的#id#符号标记的;从<select>元素的resultClass属性我们还可以看出该语句的结果是一个Address类的实例,假设Address类的所有字段名与SELECT语句中指定的各个列的别名(通过as关键字)相同。例如,ADR_ID列别名为id,故会映射到Address类中名为id的字段上。不论你是否相信,要映射一个SQL语句使其接受一个Integer作为参数并返回一个Address对象作为结果,你要做的就是这些了。用于执行以上语句的Java代码如下:
Address address = (Address) sqlMap.queryForObject("getAddress",
new Integer(5));
SQL映射这个概念具有很好的可移植性,可应用于任何一个功能完备的编程语言。例如,基于iBATIS.NET的C#代码就与之前的Java代码几乎是一模一样的:
Address address = (Address) sqlMap.QueryForObject("getAddress", 5);
当然,iBATIS针对SQL映射还有许多高级选项,特别是针对映射的返回结果。
三、配置iBATIS
最简单的iBATIS应用中的SQL映射配
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/>
<property name="JDBC.Username" value="root"/>
<property name="JDBC.Password" value="blah"/>
</dataSource>
</transactionManager>
<sqlMap resource="SqlMap.xml"/>
</sqlMapConfig>
由于这是一个XML文件,我们需要提供doctype和DTD用于验证(1)。SIMPLE是一个iBATIS内置事务处理器的别名(2)。我们需要为这个事务处理器提供JDBC驱动的名称、JDBC URL、以及允许你连接到数据库的用户名(username)和密码(password)。然后你将提供你的SQL映射文件(3)。
四、执行SQL语句
String resource="SqlMapConfig.xml";
Reader reader=Resouces.getResouceAsReader(resource);
SqlMapClient sqlMap=SqlMapClentBuilder.builderSqlMapClient(reader);
List list=sqlMap.queryForList("getAllUsers","EMPLOYEE");
五、iBatis配置文件有了,指定的连接的数据库URL,用户名,密码,指定的映射文件的地址;映射文件也说明了;怎么执行SQL语句也有了;接下就少怎么构造应用了,很简单,只需
在classpath上添加两个JAR文件:ibatis-common-2.jar和ibatis-sqlmap-2.jar
分享到:
相关推荐
- 从JDBC的操作到能够使用ibatis进行创建(Create)、更新(Update)、读取(Read)和删除(Delete)等操作的学习曲线非常平缓,通常只需要一天左右的时间就能快速上手。 2. **易于进行SQL优化:** - ibatis采用半自动化的...
随着ibatis的结束,MyBatis作为一个独立项目继续发展,并且成为Apache的顶级项目之一。之后,MyBatis项目被托管到了Google Code下,现在托管于GitHub平台。 #### 二、原生JDBC存在的问题及解决方案 在原生JDBC开发...
(第一天)之Apache整合Tomcat (第二天)之apache tomcat https应用 (第三天)之apache性能调优 (第四天)之Tomcat性能调优-让小猫飞奔 (第五天)之tomcat集群-群猫乱舞 (第六天)之漫谈基于数据库的权限系统的...
MyBatis最初是由ibatis项目发展而来,ibatis是一个广泛使用的Java持久层框架。随着ibatis被Apache软件基金会接管并更名为MyBatis,其功能得到了进一步的增强和完善,并且被托管到了GitHub上,便于开发者进行贡献和...
第一天: 1、Mybatis的介绍 2、Mybatis的入门 a)使用jdbc操作数据库存在的问题 b)Mybatis的架构 c)Mybatis的入门程序 3、Dao的开发方法 a)原始dao的开发方法 b)接口的动态代理方式 SqlMapConfig.xml文件说 2.Mybatis...
MyBatis 是一个基于 Java 的持久层框架,它致力于简化 SQL 查询的处理,提供了灵活的 SQL 和 XML 或注解的映射方式,使得开发者能够专注于 SQL 本身,而无需关注 JDBC 的繁琐操作。MyBatis 从前身为 Apache 的 ...
MyBatis的前身就是iBatis , MyBatis使用XML描述符或注释将对象与存储过程或SQL语句耦合,将关系数据库与面向对象应用程序结合使用变得更加容易。支持定制化SQL、存储过程以及高级映射。
本主题“通向架构师的道路第十八到第二十三天的例子”将围绕SSH(Struts、Spring、Hibernate)、Maven、Ant以及iBatis等关键工具和技术展开,这些都是构建企业级Java应用的重要组成部分。 首先,SSH是一个经典的...
1. **第一天:Java入门** - 学习方法介绍。 - 构建Java开发环境。 - 第一个Java程序:HelloWorld。 - Java技术的关键特性:虚拟机、垃圾回收、代码安全性。 2. **第二天:Java基础语法** - 关键字、标识符、...
在软件开发框架方面,"通向架构师的道路(第二十一天)万能框架spring(三)之SSH.docx"提到了Spring框架与其他两个流行框架Struts和Hibernate(SSH)的整合,这展示了如何构建高效的企业级应用程序。"通向架构师的...
2. **通向架构师的道路(第二十一天)万能框架spring(三)之SSH.docx** SSH是指Spring、Struts2和Hibernate三个开源框架的组合,常用于构建企业级Java应用。本文档可能详细介绍了如何将Spring与其他两个框架集成,...
在第四天,课程会介绍iBATIS,这是一个灵活的SQL映射框架,可以与Hibernate进行对比和整合。同时,课程还将讨论如何将基于SSH(Struts2+Spring+Hibernate/iBATIS)的应用迁移到WebLogic,以及在WebLogic上的性能优化...
首先,文章从第一天的Apache整合Tomcat开始,讲解了J2EE工程的通用架构,这是理解整个系统运行的基础。接着,作者指导读者进行Oracle数据库的安装与配置,App Server的安装,以及Web Server的安装,特别强调了Apache...
在这个压缩包中,包含的是第一天学习Mybatis的相关材料。 首先,我们要了解Mybatis的基本概念。Mybatis是由Apache基金会维护的一个开源项目,它的前身是iBatis。Mybatis提供了一个动态的SQL、简单的XML或注解用于...