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. 为一张PCI卡打通经络的过程

    一张PCI卡通过“一转二”的转接卡插在主板上,probe调用失败,日志显示读取配置空间的时候发生了奇偶校验错误,可是使用相同的转接卡把它插在另外一台相同机器的主板上时,却运行正常,这就说明不是转接卡的 ...

  2. 【转】以XML文件方式保存用户数据——2013-08-25 22

    正在做项目中有很多游戏数据要保存,常见的玩家数据这些比较简单的可以用CCUserDefault.它是cocos2d-x用来存取基本数据类型用的.保存为XML文件格式. 主要方法:(和java的map很 ...

  3. HDU4570:Multi-bit Trie(区间DP)

    Problem Description IP lookup is one of the key functions of routers for packets forwarding and clas ...

  4. javascript进击(三)简介

    JavaScript 表单验证(可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证) 被 JavaScript 验证的这些典型的表单数据有: 用户是否已填写表单中的必填项目? 用户输 ...

  5. 程序员带你学习安卓开发系列-Android文件存储

    这是程序员带你学习安卓开发系列教程.本文章致力于面向对象程序员可以快速学习开发安卓技术. 上篇文章:.Net程序员快速学习安卓开发-布局和点击事件的写法 主要讲解了布局和点击事件的写法. 上篇文章补充 ...

  6. YII设置用户访问过滤

    设置用户访问过滤 1.哪个控制器设置访问过滤,就在哪个控制器中添加如下代码 class XxxController extends Controller { //当前控制器是否使用过滤功能 publi ...

  7. StringBuffer跟StringBuilder以及HashMap跟HashTable

    StringBuffer是线程安全的 HashTable是线程安全的,但HashMao单线程程序中的性能比HashTable要高,对了HashTable用(add),HashMap用的(put)

  8. @property在内存管理中的参数问题

    // // Created by wanghy on 15/8/14. // // /* retain : release旧值,retain新值(用于OC对象),要配合nonatomic使用. ass ...

  9. C# 中使用win32函数 GetScrollInfo返回false 返回引用全是零的问题

    最近做一个项目要获得ScrollBar的位置,因为.net找不到此类功能,只好用MFC中的函数了,GetScrollPos只返回listview顶部的位置,此时我找到了GetScrollInfo,觉得 ...

  10. dapper的一个小扩展以支持dataset

    废话不多,直接上方法 public static DataSet ExecuteDataSet(this IDbConnection cnn, IDbDataAdapter adapter, stri ...