XML

iBatis可以使用xml来作为参数输入以及结果返回;这个功能的优势在于某些特定的场景;还有可以通过DOM方式来作为参数传递;但是这个方式应用的比较少,如果服务器是xml服务器可以采用这种方式;

LazeLoad与groupby技术

对于海量数据,如果一次性就加载可能比较麻烦,这里就需要一些技术来对返回信息进行控制,LazyLoad技术大家都比较清楚,只有需要的时候再从DB中取值;iBatis里面支持LazyLoad,但是LazyLoad的设置是全局性质的,groupby的实现则实现了针对单个操作层面上的配置;无论是LazyLoad还是groupby的实现方式都是查询后,将结果缓存,其他深层次查询的时候还是获得这个对象,通过存取这个对象的属性来实现深度查询(所谓深度查询是指相对于父查询的子查询)。但是有一点,对于lazyloader而言,如果想要加载全部数据效率是比普通查询是要低很多的(因为需要多次访问数据库,增加IO);

rowHandler技术

rowHandler技术和C#里面的DataReader很像了,iBatis里面的实现机制每当取到一条记录后都会走RowHandler的handleRow的方法,如果你实现了这个类的方法,就可以对该数据进行操作;rowhandler的一大优势就是数据操作完之后就释放,不会占用内存,这一点和LazyLoader以及groupby是不一样的;

鉴别器

鉴别器的作用在于如果一个查询里面要么是图书类,要么是新闻类,当然作为父容器可能是"书店类"(图书类和新闻类字段不一样),这样可以通过鉴别器的配置自动将字段匹配到对应的类型上面去;如下图所示:

存储过程技术

iBatis支持存储过程,以及输入时输出参数,要考虑到存储过程的快捷性。尽管存储过程违背了"一次编译,到处运行",但是在提供性能方面很多时候拥有者绝对优势,比如,有的操作需要通过建立多次交互才能实现,但是使用存储过程一次就搞定了(比如判断是否重复,重复就更新,不重复就插入);

批量更新

iBatis提供了批量更新,批量更新多半都是伴随着事务一起的,批量的优势和存储过程有些类似,操作集中在一次完成;批量更新与一个缺点:无法再insert之后就立即返回自动生成主键,如果主键是自动生成的话;还包括其他的值,比如如果两个操作具有依赖性,后面的操作(sql执行)依赖于前一个操作的返回值(返回到应用层),因为批处理是整合完毕后一次性的提交数据库处理。如果是相互依赖就是用存储过程来处理吧;

处理并发

处理并发这个专题iBatis并没有做处理,作为数据层一个共同的问题一般都是使用更新操作外带全家桶(时间戳、版本)的方式来进行处理;

外部参数(external-parameter) vs 内联参数(inline-parameter)

外部参数:

内联参数:就是SQL文中通过#...#或者$...$的方式占位的形式

经过测试外部参数只能是通过有序的"?"来进行,无法在使用声明名称的方式(内联形式),根据iBatis的本意是在insert等操作中内联参数还需要指定类型,通过定义外联方式可以一次性制定好类型,方便重用,但是问题是重用的先决条件是SQL参数次序要保持一致,其次呢,实际应用中,即使不指定类型也是可以顺利插入/更新;所以外部参数被使用的不多。

 

 

 

 

 

 

 

iBatis系列一的更多相关文章

  1. iBatis系列之三

    iBatis和Hibernate最大差别就是在于iBatis没有严格的和具体的表做关联:而是将结果集和DAO做关联. iBatis的SqlConfig.xml配置一个properties文件,其实可以 ...

  2. iBatis --> MyBatis

    从 Clinton Begin 到 Google(从 iBatis 到 MyBatis,从 Apache Software Foundation 到 Google Code),Apache 开源代码项 ...

  3. iBatis.Net(C#)系列Demo源码

    iBatis.Net(C#)系列一:简介及运行环境源码  [下载] iBatis.Net(C#)系列二:SQL数据映射源码 [下载] iBatis.Net(C#)系列三:数据库查询源码  [下载]

  4. [原]iBatis.Net(C#)系列一:简介及运行环境

    转载请注明http://www.cnblogs.com/13590/archive/2013/02/27/2934580.html 摘要:介绍iBatis.Net的基本情况和运行原理,运行环境中各参数 ...

  5. IBatis.Net系列-多参数的SQL语句的配置

    我们在使用IBatis.net操作数据的时候,肯定会碰到SQL参数当我们有一个参数时,IBatis的xml映射文件如下: <statement id="getProduct" ...

  6. Spring 系列: Spring 框架简介 -7个部分

    Spring 系列: Spring 框架简介 Spring AOP 和 IOC 容器入门 在这由三部分组成的介绍 Spring 框架的系列文章的第一期中,将开始学习如何用 Spring 技术构建轻量级 ...

  7. 深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap

    上篇<深入浅出Mybatis系列(七)---mapper映射文件配置之insert.update.delete>介绍了insert.update.delete的用法,本篇将介绍select ...

  8. 深入浅出Mybatis系列(七)---mapper映射文件配置之insert、update、delete

    上篇文章<深入浅出Mybatis系列(六)---objectFactory.plugins.mappers简介与配置>简单地给mybatis的配置画上了一个句号.那么从本篇文章开始,将会介 ...

  9. 深入浅出Mybatis系列(一)---Mybatis入门

    最近两年 springmvc + mybatis 的在这种搭配还是蛮火的,楼主我呢,也从来没真正去接触过mybatis, 趁近日得闲, 就去学习一下mybatis吧. 本次拟根据自己的学习进度,做一次 ...

随机推荐

  1. Android开发_Gson解析

    //转换器 GsonBuilder builder = new GsonBuilder(); // 不转换没有 @Expose 注解的字段 builder.excludeFieldsWithoutEx ...

  2. SOAP web service用AFNetWorking实现请求

    问: This is my current call to (asmx) SOAP web service: NSString *soapMessage = [NSString stringWithF ...

  3. To Be NUMBER ONE

    Problem Description One is an interesting integer. This is also an interesting problem. You are assi ...

  4. NIO学习:buffer读入与写出(文件复制示例)

    FileInputStream fInputStream=new FileInputStream(new File("/root/Desktop/testImage.jpg")); ...

  5. oracle Form Builer:FIND_FORM Built-in

    Description Searches the list of forms and returns a form module ID when it finds a valid form with ...

  6. Spring MVC自定义统一异常处理类,并且在控制台中输出错误日志

    在使用SimpleMappingExceptionResolver实现统一异常处理后(参考Spring MVC的异常统一处理方法), 发现出现异常时,log4j无法在控制台输出错误日志.因此需要自定义 ...

  7. 基于Windows的套接字相关函数及示例

    链接ws2_32.lib库 头文件#include <winsock2.h> int WSAStartup(WORD wVersionRequested,LPWSADATA lpWSADa ...

  8. javascript-03

    1.Object   |-1.var  变量=new Object();         |-变量.自定义的属性='值';     |-变量.自定义名称=function(){}   |-2.var ...

  9. jsp页面中frameset的使用方法

    frame,是网页开发必须掌握的知识.例如后台架构.局部刷新,页面分割,都是frame的用途表现,尤其是后台页面制作,使用frame会给用户带来非常舒适的使用感受. frame知识点包括(frames ...

  10. ACM——A + B Problem (1)

    A + B Problem (1) 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte总提交:5907            测试通过:151 ...