摘要:
1.insert,update,delete返回值(1).insert返回的为插入的主键值,但必须在配置文件中加入<selectKey/>如果主键值为String<selectKeyresultClass="string"keyProperty="id">SELECT@@IDENTITYASID</selectKey>如果主键值为Int型<selectKeyresultClass="java.lang.Integer"keyProperty="id">SELECT@@ 阅读全文
摘要:
下面这个配置基本上包含了最复杂的功能:分页\搜索\排序\缓存\传值Hash表\返回hash表\动态sql<statement id="XinxiTable_SelectAll" listClass="ArrayList" resultMap="SimpleXinxi" parameterClass="Hashtable" cacheModel="xinxi-cache" > SELECT <dynamic prepend="top"> <isNo 阅读全文
摘要:
在 IBatisNet 没有 IBatis4Java 的 startBatch() 函数,这让我们批量插入大量数据时很受困扰。本文介绍了如何在 IBatisNet 和 ADO.Net 中批量插入数据。 说到批量插入,我们有以下解决方案:1) 直接执行用 SqlCommand执行 INSERT语句,一条一条的插入。无疑,这样效率最低。 2) 把拼接INSERT 语句,一次插入多条;这样性能不好说,最大的问题就是 SqlCommand 有参数限制(2100个)。 3)利用 SqlBulkCopy 或SqlDataAdapter 的 Update 方法,可以实现批量的更新/插入,但是数据是基于 Da 阅读全文
摘要:
除了前面两章中我们接触到的简单的数据库操作,iBATIS也可以完成更为复杂的任务。在本章中,我们会了解新的技术,减少我们的编码量;以及改善性能、降低资源消耗(footprint)的几种方法。6.1 使用iBATIS操作XML 译者注:iBATIS的Java版本可以操作基于XML的数据。但意义并不是很大,在以后的版本中该特性可能会被移除。iBATIS.NET则未提供该功能。6.2 使用映射语句关联对象iBATIS框架也提供了多种方法用以关联复杂的对象,比如订单(order)和它的订单项(order item)(还有它们的相关产品、顾客等等)。每种方法都有其优点和缺点,正所谓“尺有所短,寸有所长” 阅读全文
摘要:
5.3 更新和删除数据 至此,我们已经学习了如何向数据库插入数据以及获取相应记录的键值,再来看看如何更新和删除数据。Insert方法返回的是object类型的值,而Update和Delete方法则返回int类型的值,该值指示了更新或删除语句所影响的记录数。iBATIS框架允许使用单条语句操作一条或多条记录。这是它与大多数ORM工具不同的地方之一,后者一般只能修改单条记录。5.3.1 并发更新处理 iBATIS目前尚未实现的一个功能是锁定记录以管理对相同数据的并发修改。有几种技术可用来处理并发更新,如在数据行上使用时间戳或者版本号。比如,有如下一个account表,定义为:Code highli 阅读全文
摘要:
对数据库执行查询无疑很重要,但多数程序同时也需要将数据写入数据库。在本章中,我们将探究使用iBATIS操作数据库的几种方式。本章的内容以第4章介绍的概念为基础,因此,如果您刚开始接触iBATiS,还没读过第4章,可以先去浏览一下,因为这一章中的关于参数映射的绝大部分内容同样适用于本章的非查询语句。 5.1 更新数据的基石 在第4章中,您已经学习了所有的语句类型和基本查询相关的部分API。这里我们再来看一下执行非查询语句常用的API,然后回顾一下更新数据库相关的语句类型。5.1.1 非查询SQL语句相关的API 我们把更新数据库的一些“高级”的技术保留在下章中,这里就仅仅看一下insert,up 阅读全文
摘要:
4.3 映射参数(Mapping Parameters) 对于大多数SQL语句来说,它们有用是因为我们可以在运行时向其传入参数。 有两种方式可以将参数(parameter)映射到语句中:内联(inline)参数和外部(external)参数。使用内联参数,配置一般较为简单,iBATIS会根据您的配置进行“揣测”,以获取其它细节信息。而使用外部参数时,配置一般更为显式的(具体)——因为您告诉iBATIS它该如何去做。 4.3.1 外部参数映射 参数映射(Parameter Map)定义了一个参数的有序列表,它与查询语句的占位符相匹配。注意,参数对象的属性定义可以按任意顺序,参数映射会确保每个值得 阅读全文
摘要:
在前面的章节中,我们了解了iBATIS的sqlMap.config文件的配置,还给出了一个映射语句文件的示例。现在您应该具备了一定基础,可以进一步完善我们的数据访问层了。 本章和下一章(执行非查询语句)将详细讨论在Data Map文件中创建和使用映射语句的相关内容。在本章中,我们将首先浏览映射语句的大体内容以及它们的前提知识。然后我们将解释如何使用映射语句从数据库中获取类型化的对象(typed object),以及如何传入参数来限制返回的数据(比如添加查询条件)。在第五章中,您将学习到如何使用映射语句来更新数据库。4.1 使用基础 4.1.1 创建JavaBeans 译注:原书中本节的内容主要 阅读全文
摘要:
译注:本章讲解的是iBATIS的安装和配置,原书使用的是Java版本,与.NET版本的安装、配置过程不尽相同,因此这里直接就.NET版本进行说明。主要参考的是iBATIS官方的DataMapper Guide文档,本章的配置主要针对DataMapper,DataAccess的配置将出现在第10章。 iBATIS的安装过程快速而简单。它是一个类库,而不是应用程序,所以实际上并不需要安装,但要在应用程序中使用它还是要经过几个步骤。 如果您熟悉C#和ADO.NET,那么可能需要好好阅读本章为下面的一两章做好准备。首先,我们提供了安装和配置过程的概览,然后是该过程的详细说明。 要获取iBATIS,您有 阅读全文
摘要:
2.5 iBATIS快速上手 iBATIS框架非常简单,它上手起来同样简单。有多简单呢?使用iBATIS只要五分钟我们就可以创建一个完整的应用程序了——当然这不是大型的ERP(Enterprise Resource Planning)解决方案,也不是大规模的电子商务网站,只是一个简单的命令行工具,它可以执行iBATIS SQL Map中的SQL语句并返回结果到控制台。下面这个例子将配置一个简单的静态SQL语句,查询一个简单的数据表,将结果输出到控制台,效果如下:<!--[endif]--> 输出的数据实在不算漂亮,但足够我们了解iBATIS基本的工作原理了。在下面几个小节中,我们会 阅读全文
摘要:
iBATIS是一个混合式的解决方案(hybrid solution),借鉴了多种操作关系数据库的方法的理念。那么iBATIS到底是什么呢?这一章就来回答这个问题。iBATIS是一种data mapper。Martin Fowler在他的《Patterns of Enterprise Application Architecture》一书中是这样描述Data Mapper的:一个映射层,在对象和数据库间传递数据,并保持两者与映射层本身相独立。.注:Mapper是在两个独立对象间建立通信关系的一种对象。Martin很好地区分了数据映射(Data Mapping)和元数据映射(Metadata Ma 阅读全文
摘要:
在一个邮件列表的讨论中,了解了如何在IBatis.Net中返回DataSet以及一些相关的内容。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->publicstaticDataSetQueryForDataSet(stringstatementName,objectparamObject){DataSetds=newDataSet();ISqlMappermapper=GetMapper();IMappedStatementstatement 阅读全文