什么是iBATIS 什么是iban号码
创始人
2024-04-16 12:20:42
0

什么是iBATIS呢?让我们首先来看看它的概念:iBATIS就是我们通常所说的数据映射器(data mapper)。Martin Fowler在他的著作Patterns of Enterprise Application Architecture(Addison-Wesley Professional, 2002)中,对数据映射器模式是这样描述的:

所谓映射器,是用于在对象和数据库之间搬运数据,同时保证对象、数据库以及映射器本身都相互独立。

Martin在区分数据映射以及元数据映射上,确实做了一件非常出色的工作,元数据映射正是适合使用对象/关系映射(O/RM)工具的地方。O/RM工具将数据库表及其列映射为应用中的类及字段。或者说,O/RM工具在数据库的元数据与类的元数据之间建立起了一种映射关系。图2-1展示了所谓的O/RM,它在一个类与数据库表之间建立了映射关系。在这种情况下,类的每一个字段都被映射为数据库中相应表的唯一列。

iBATIS对象/关系映射 

图2-1 对象/关系映射

iBATIS与之不同,它不是直接把类映射为数据库表或者说把类的字段映射为数据库列,而是把SQL语句的参数与结果(也即输入和输出)映射为类。正如你在本书的剩余部分中将会学到的,iBATIS在类和数据库表之间建立了一个额外的间接层,这就为如何在类和数据库表之间建立映射关系带来了更大的灵活性,使得在不用改变数据模型或者对象模型的情况下改变它们的映射关系成为可能。其实我们这里讨论的这个间接层就是SQL。SQL这个额外的间接层使得iBATIS能够更好地隔离数据库设计和应用中使用的对象模型。这就使得它们两者之间的相关性能够降至最少。图2-2展示了iBATIS如何使用SQL映射数据。

iBATIS的SQL映射 

图2-2 iBATIS的SQL映射

正如你在图2-2中所看到的,iBATIS的映射层其实就是SQL。iBATIS让你自己写SQL语句,iBATIS负责在类的字段和数据库表的列之间映射参数和结果。基于这个原因,也考虑到与其他各种各样的映射方式的区分,为避免混淆,iBATIS小组通常将所谓的“数据映射器”称为SQL映射器(SQL mapper)。

什么是iBATIS之映射SQL语句

任何一条SQL语句都可以看作是一个函数,有输入输出集合。输入即参数(parameter),通常可以在SQL语句的WHERE子句中找到。输出则是SELECT子句中指定的那些列。图2-3描述了这个思想。

SQL语句可以被看作一个包含输入输出的函数 

图2-3 SQL语句可以被看作一个包含输入输出的函数

这种方式的最大优点就在于SQL语句使得开发者能够自己把握巨大的灵活性。他可以在不改变数据模型的前提下轻易地操纵数据以适应对象模型。甚至,开发者还可以通过数据库内建的函数和存储过程引入多表和结果集。总之,他们可以随心所欲地利用SQL的强大能力。

iBATIS使用一个简单的XML描述文件来映射SQL语句的输入和输出。代码清单2-1给出了一个这样的例子。

代码清单2-1  一个SQL映射的例子

什么是iBATIS之代码程序 

从以上代码中我们看到了一条SELECT语句,它返回address表中的数据。从元素的resultClass属性我们还可以看出该语句的结果是一个Address类的实例,假设Address类的所有字段名与SELECT语句中指定的各个列的别名(通过as关键字)相同。例如,ADR_ID列别名为id,故会映射到Address类中名为id的字段上。不论你是否相信,要映射一个SQL语句使其接受一个Integer作为参数并返回一个Address对象作为结果,你要做的就是这些了。用于执行以上语句的Java代码如下:

  1. Address address = (Address) sqlMap.queryForObject("getAddress", new Integer(5)); 

SQL映射这个概念具有很好的可移植性,可应用于任何一个功能完备的编程语言。例如,基于iBATIS.NET的C#代码就与之前的Java代码几乎是一模一样的:

  1. Address address = (Address) sqlMap.QueryForObject("getAddress", 5); 

当然,iBATIS针对SQL映射还有许多高级选项,特别是针对映射的返回结果。关于这些高级选项,我们会在本书的第二部分“iBATIS基础”中详细讨论。现在,我们最重要的任务就是了解iBATIS的特性和好处,以及它如何工作。

什么是iBATIS就向你介绍到这里,希望通过介绍是你能对什么是iBATIS有所了解。

【编辑推荐】

  1. iBATIS事务处理浅析
  2. iBatis和Hibernate的较量浅析
  3. iBATIS动态映射浅析
  4. iBATIS DAO框架浅析
  5. iBATIS的Log机制浅谈

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...