iBATIS_In_Action(文档).docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
iBATIS_In_Action(文档).docx

 HYPERLINK /anderslly/archive/2007/08/19/ibatisinactionch021.html iBATIS In Action:什么是iBATIS(一) 2007-08-19 20:39 by Anders Cui, 8509 visits,? HYPERLINK /anderslly/archive/2007/08/19/ibatisinactionch021.html 网摘,? HYPERLINK /anderslly/AddToFavorite.aspx?id=861849 收藏,? HYPERLINK /anderslly/admin/EditPosts.aspx?postid=861849 编辑 在上一章中我们详细讨论了iBATIS的哲学观,以及这个框架的来历。我们也说过,iBATIS是一个混合式的解决方案(hybrid solution),借鉴了多种操作关系数据库的方法的理念。那么iBATIS到底是什么呢?这一章就来回答这个问题。 iBATIS是一种data mapper。Martin Fowler在他的《Patterns of Enterprise Application Architecture》一书中是这样描述Data Mapper的: 一个映射层,在对象和数据库间传递数据,并保持两者与映射层本身相独立。. 注:Mapper是在两个独立对象间建立通信关系的一种对象。 Martin很好地区分了数据映射(Data Mapping)和元数据映射(Metadata Mapping),后者正是O/RM工具的依据,这种工具将数据库的表和列映射到应用程序中的类和字段(field),也就是说它将数据库的元数据映射到类的元数据。图2.1显示了类和数据库表的O/R?映射的情形。在这种情况下,类的每个字段映射到了表中的一个相应的列。 译注:在C#中通常在类的属性(Property)与表的列间进行映射。 iBATIS则与之不同,它不是直接在类与数据表或字段与列之间进行关联,而是把SQL语句的参数(parameter)和返回结果(result)映射至类。在本书的剩余部分您将看到,iBATIS是处于类和数据表之间的一个中间层,这使得它在类和数据表之间进行映射时更加灵活,而不需要数据库模型或对象模型(object model)的任何修改。我们所说的中间层实际上就是SQL,它使得iBATIS能够更好地分离数据库和对象模型的设计,这样就相对减少了两者间的耦合。图2.2说明了iBATIS如何使用SQL映射数据。 从图2.2可以看到,iBATIS的映射层正是SQL。您只管写您的SQL,iBATIS会为您处理类的属性和数据表的列之间的映射。有鉴于此,同时也为了消除与其它各种映射方式引起的混淆,iBATIS团队通常称这种Data Mapper为SQL Mapper。 2.1 SQL?映射 任何SQL语句都可看作是一组输入和输出。输入的值是参数(parameter),通常出现在WHERE子句中。输出的值则是出现在SELECT子句中的列。图2.3描述了这种观点。 这种方式的优势在于SQL语句给开发人员带来了很大的灵活性。我们可以轻松地操作数据使之与对象模型匹配而无需修改后台的数据库设计。此外,开发人员可以使用内置的数据库函数或存储过程来返回多个不同的表或结果,SQL的强大能力变得信手拈来。 iBATIS使用一个简单的XML描述文件来映射SQL语句的输入和输出。列表2.1显示了一个描述文件的示例。 此处我们可以看到一条SELECT SQL语句,它返回的是地址信息。根据select元素我们可以了解它接受一个整型数作为参数,也就是WHERE子句中标记为#id#的部分。我们也可了解结果为Address类型的一个实例,这里假定Address类包含了与SELECT子句中每一列的别名名称相同的属性。例如,别名为id的列将会映射至Address类的id属性。信不信由你,这就是映射一条接受整型参数、返回Address对象的SQL语句所需的全部了。执行这条语句使用的Java代码是: Address address = (Address) sqlMap.queryForObject(getAddress, new Integer(5)); 我们的SQL映射方式可移植性很强,可以应用到任何特性完整的编程语言。比如,使用iBATIS.NET的C#代码为: Address address = (Address) sqlMap.QueryForObject(getAddress, 5); 当然,关于映射还有更多的高级选项,特别是返回结果(result)相关的,我们将会在第二部分(iBATIS基础)进行讨论。现在,理解iBA

文档评论(0)

克拉钻 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档