- 3
- 0
- 约7.09千字
- 约 12页
- 2018-06-23 发布于浙江
- 举报
基于iBais的通用持久层对象
ibatis介绍
使用ibatis 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象, 这一层与通过Hibernate 实现ORM 而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL 语句,而ibatis 则要求开发者编写具体的SQL 语句。相对Hibernate等 “全自动”ORM机制而言,ibatis 以SQL开发的工作量和数据库移植性上的让步,为系统 设计提供了更大的自由空间。作为“全自动”ORM 实现的一种有益补充,ibatis 的出现显 得别具意义。
版权声明:任何获得Matrix授权的网站,转载时请务必保留以下作者信息和链接
作者:fellowArrayArray
原文:/resource/article/44/44410_iBatis.html
关键字:iBatis;ORM
一、为什么要设计“通用”的东西
在大多数时候,我们所需要的持久层对象(PO)大多都是一张表(or视图)对应一个类。按照Hibernate的思想,就是抛开数据库的束缚,把焦点集中到业务对象中。而很多自动化工具的确让做到了通过表结构生成对应的对象,or通过对象自动生成表。对于小项目来说,一切都是简单的;对于有规范设计的项目来说,PO的设计也不是一件困难的工作。但是对于那些业务变动频繁的项目来说,改动PO可能成了一件很繁重的工作。试想一下,假设某个表需要增加一个字段:对于Hibernate(or iBaits),首先要改配置文件,然后PO,然后DAO(也许没有),然后业务逻辑,然后JO,然后界面,etc,贯通了全部层次。
恩,写程序的都不喜欢这些重复劳动,但是做企业级应用的谁不是每天在这些工作中打滚。
研究过iBaits以后,发现有些通用的方法可以解决,就是设计一个通用的持久层对象。
二、基于什么技术
iBatis可以使用Map对象作为PO,Hibernate好像也有相关的功能(我没有细看,不确定)。
iBatis执行一条指令的过程大概是这样的:
其中圈圈1、2、3描述了iBatis最重要的三个对象。
圈圈1:statement简单来说就是存储sql语句的配置信息,一个最简单的statement:
insert into PRODUCT (PRD_ID, PRD_DESCRIPTION) values (1, “Shih Tzu”)
其中id属性是这个statement的唯一标识,全局不能重复。
以上当然是最简单的了,没有参数也不需要返回值,但实际情况下基本都需要传入参数,下面就是介绍参数。
圈圈2:参数对象主要分两种类型:parameterMap、parameterClass和Inline Parameter。
其中parameterMap是配置文件定义传入参数表,如下:
insert into PRODUCT (PRD_ID, PRD_DESCRIPTION) values (?,?);
而parameterClass是传入参数对象(JavaBean),如下:
insert into PRODUCT values (#id#, #description#, #price#)
Inline Parameter则是强化版的parameterClass,如下:
insert into PRODUCT (PRD_ID, PRD_DESCRIPTION) values (#id:NUMERIC:-ArrayArrayArrayArrayArrayArray#, #description:VARCHAR:NO_ENTRY#);
其中第一种方法看着就复杂,实际是为了兼容老版本留下来的,所以parameterClass是我们最常用的方法。官方文档对parameterClass介绍很详细,因为这是核心之一,具体请自己查阅。有3个特性说明一下:
a. parameterClass对象可以传入一个Map对象(or Map子类)。本来如果是传入JavaBean,程序会通过get/set来分析取得参数;而Map是key-value结构的,那程序会直接通过key来分析取参数。
b. 看以下语句:
insert into PRODUCT values (#id#, #description#, #price#, #classify.id#)
蓝色部分#classify.id#翻译过来实际是product.getClassify().getId(),classify是Product对象的一个子对象。
c. 在模
您可能关注的文档
- 地下车库的防设施检测报告.doc
- 地下车库程施工方案.doc
- 地下车库济技术研究.doc
- 地下通道工专项方案.doc
- 地下金属矿山井下帷幕浆实施方案.doc
- 地下防水施工方案secret.doc
- 地下车库高模施工方案.doc
- 地下深基车站主体结构施工方案.doc
- 地产单位监理单位预控重管理方案.doc
- 地产建筑工质量通病防治办法.doc
- (正式版)DB51∕T 1867-2014 《袋栽黑木耳生产技术规程》.docx
- (正式版)DB51∕T 2413-2023 《油橄榄密植丰产栽培技术规程》.docx
- (正式版)DB51∕T 2436-2017 《川菜东坡一品肉烹饪工艺技术规范》.docx
- (正式版)DB51∕T 2396-2017 《农村电子商务服务站(点)服务与管理规范》.docx
- (正式版)DB51∕T 2419-2017 《桢楠扦插育苗技术规程》.docx
- CN105145773B 一种无花果曲奇饼干及其制作方法 (江苏农林职业技术学院).docx
- CN105203825A 微测量电极的制作方法和热电势的测量方法及相关装置 (国家纳米科学中心).docx
- CN105137533B 一种啁啾光纤光栅及其制作方法 (南京航空航天大学).docx
- (正式版)DB51∕T 2453-2018 《巴山新居公共管理指南》.docx
- (正式版)DB51∕T 1892-2014 《川西北地区沙化土地治理技术规程》.docx
原创力文档

文档评论(0)