什么是iBATIS

iBATISInAction:什么是iBATIS(一) 火龙果软件工程技术中心  在上一章中我们详细讨论了iBATIS的哲学观,以及这个框架的来历。我们也说过,iBATIS是一个混合式的解决方案(hybridsolution),借鉴了多种操作关系数据库的方法的理念。那么iBATIS到底是什么呢?这一章就来回答这个问题。iBATIS是一种datamapper。MartinFowler在他的《PatternsofEnterpriseApplicationArchitecture》一书中是这样描述DataMapper的:一个映射层,在对象和数据库间传递数据,并保持两者与映射层本身相独立。.注:Mapper是在两个独立对象间建立通信关系的一种对象。Mart 立即下载

iBATIS就是我们通常所说的数据映射器(data mapper)。Martin Fowler在他的著作Patterns of Enterprise Application Architecture(Addison-Wesley Professional, 2002)中,对数据映射器模式是这样描述的:

所谓映射器,是用于在对象和数据库之间搬运数据,同时保证对象、数据库以及映射器本身都相互独立。

Martin在区分数据映射以及元数据映射上,确实做了一件非常出色的工作,元数据映射正是适合使用对象/关系映射(O/RM)工具的地方。O/RM工具将数据库表及其列映射为应用中的类及字段。或者说,O/RM工具在数据库的元数据与类的元数据之间建立起了一种映射关系。图2-1展示了所谓的O/RM,它在一个类与数据库表之间建立了映射关系。在这种情况下,类的每一个字段都被映射为数据库中相应表的唯一列。

图2-1 对象/关系映射

iBATIS与之不同,它不是直接把类映射为数据库表或者说把类的字段映射为数据库列,而是把SQL语句的参数与结果(也即输入和输出)映射为类。正如你在本书的剩余部分中将会学到的,iBATIS在类和数据库表之间建立了一个额外的间接层,这就为如何在类和数据库表之间建立映射关系带来了更大的灵活性,使得在不用改变数据模型或者对象模型的情况下改变它们的映射关系成为可能。其实我们这里讨论的这个间接层就是SQL。SQL这个额外的间接层使得iBATIS能够更好地隔离数据库设计和应用中使用的对象模型。这就使得它们两者之间的相关性能够降至最少。图2-2展示了iBATIS如何使用SQL映射数据。

图2-2 iBATIS的SQL映射

正如你在图2-2中所看到的,iBATIS的映射层其实就是SQL。iBATIS让你自己写SQL语句,iBATIS负责在类的字段和数据库表的列之间映射参数和结果。基于这个原因,也考虑到与其他各种各样的映射方式的区分,为避免混淆,iBATIS小组通常将所谓的“数据映射器”称为SQL映射器(SQL mapper)。

1           映射SQL语句

任何一条SQL语句都可以看作是一个函数,有输入输出集合。输入即参数(parameter),通常可以在SQL语句的WHERE子句中找到。输出则是SELECT子句中指定的那些列。图2-3描述了这个思想。

图2-3 SQL语句可以被看作一个包含输入输出的函数

这种方式的最大优点就在于SQL语句使得开发者能够自己把握巨大的灵活性。他可以在不改变数据模型的前提下轻易地操纵数据以适应对象模型。甚至,开发者还可以通过数据库内建的函数和存储过程引入多表和结果集。总之,他们可以随心所欲地利用SQL的强大能力。

iBATIS使用一个简单的XML描述文件来映射SQL语句的输入和输出。代码清单2-1给出了一个这样的例子。

代码清单2-1 一个SQL映射的例子

从以上代码中我们看到了一条SELECT语句,它返回address表中的数据。从<select>元素的parameterClass属性中我们可以看出该语句使用一个Integer对象作为参数,该参数是通过WHERE子句中的#id#符号标记的;从<select>元素的resultClass属性我们还可以看出该语句的结果是一个Address类的实例,假设Address类的所有字段名与SELECT语句中指定的各个列的别名(通过as关键字)相同。例如,ADR_ID列别名为id,故会映射到Address类中名为id的字段上。不论你是否相信,要映射一个SQL语句使其接受一个Integer作为参数并返回一个Address对象作为结果,你要做的就是这些了。用于执行以上语句的Java代码如下:

Address address = (Address) sqlMap.queryForObject("getAddress",

   new Integer(5));

SQL映射这个概念具有很好的可移植性,可应用于任何一个功能完备的编程语言。例如,基于iBATIS.NET的C#代码就与之前的Java代码几乎是一模一样的:

Address address = (Address) sqlMap.QueryForObject("getAddress", 5);

当然,iBATIS针对SQL映射还有许多高级选项,特别是针对映射的返回结果。关于这些高级选项,我们会在本书的第二部分“iBATIS基础”中详细讨论。现在,我们最重要的任务就是了解iBATIS的特性和好处,以及它如何工作

项目安全等保测评加固手册 安全等级测评的目的是通过对目标系统在安全技术及管理方面的测评,对目标系统的安全技术状态及安全管理状况做出初步判断,给出目标系统在安全技术及安全管理方面与其相应安全等级保护要求之间的差距。测评结论作为委托方进一步完善系统安全策略及安全技术防护措施依据!! 阅读详情

相关推荐

5分钟搞定!用ZLMediaKit搭建GB28181视频监控系统(含避坑指南)

本文提供了一份基于ZLMediaKit搭建GB28181视频监控系统的实战指南。文章详细介绍了从环境准备、核心组件(ZLMediaKit与SIP服务器)部署、摄像头配置到内外网穿透的完整流程,并重点分享了设备ID配置、防火墙设置等关键避坑经验,帮助开发者快速构建稳定可控的监控平台。

apple5的专栏 1088

iBatis简单介绍

1.Ibatis是开源软件组织Apache推出的一种轻量级的对象关系映射(ORM)框架,和Hibernate、Toplink等在java编程的对象持久化方面深受开发人员欢迎。 对象关系映射(ORM):简单原理是通过面向对象方式操作关系型数据库,目前存储数据最常用最流行的工具是关系型数据库,其操作方式是通过 SQL语句操作数据库的表,但是对于Java面向对象编程语言中,所有的...

weixin_34376986的博客 1043

使用 Python 获取网络数据

本文介绍了 Python 获取网络数据、使用 requests 库、编写爬虫代码以及使用 IP 代理的方法。Python 的 requests 库非常方便,可以帮助我们快速访问网络资源。编写爬虫程序需要掌握正则表达式、HTTP 协议等知识,同时需要注意爬取速度和频率,以避免对被爬取网站造成负担。最后,使用 IP 代理可以帮助我们隐匿身份,保护我们的网络安全。

互联说 2696

什么是IBatis

转自:http://blog.youkuaiyun.com/yejun8214/article/details/2216651 iBATIS就是我们通常所说的数据映射器(data mapper)。Martin Fowler在他的著作Patterns of Enterprise Application Architecture(Addison-Wesley Professional, 2002)中,对数据

C++ 爱好者 make_it_simple888 1669

APB Timer验证环境搭建——学习笔记(1)

以下为个人学习笔记,如有疏漏,请大家指正补充~~APB Timer是一个简单的下行计数器,包括一个32位计数器和一组比较器,可以实现多种计时功能。包括生成一次性中断或者定时中断。

qq_41651535的博客 1579

代号OneNET02 STM32+ESP8266 WIFI系列-第2节-STM32单片机通过ESP8266连接WIFI访问OneNET OTA服务器实现SOTA远程程序升级

第2节-STM32单片机通过ESP8266连接WIFI访问OneNET OTA服务器实现SOTA远程程序升级,这一节主要是实现通过OneNET OTA服务器将需要更新的程序远程下载到STM32单片机,这一节主要是引导程序和应用程序的讲解。

weixin_44862509的博客 1905

2. ibatis是什么

通常称为数据映射器(data mapper),ibatis把SQL语句的参数与结果映射为类。 ibatis在类和数据库表之间建立一个额外的间接层。(SQL) 1. 映射SQL语句 <select id="getAddress" parameterClass="int" resultClass="Address"> SELECT ADR_ID as id, ADR

kutim的专栏 405

用Arduino和RC522模块DIY一个NFC门禁卡复制器(附完整代码)

本文详细介绍了如何利用Arduino和RC522模块DIY一个NFC门禁卡复制器,包括硬件连接、软件配置、数据读写技术及完整代码实现。通过本教程,电子爱好者可以深入了解NFC技术,并构建自己的智能门禁系统,适用于家庭安全、办公场所等多种场景。

weixin_33704591的博客 504

IBatis——初步总结

IBatis是持久层的框架,也就是我们说的Dao层框架,关注数据库操作以及和Java对象之间的关联,我们将这样的框架也称之为ORM(Object/Relaction Mapping)框架.而这里映射的主要是我们的表和实体(bean)之间的对应关系。或者说IBatis更像是一个映射器.          一,概念介绍:IBatis是对JDBC的轻量级的封装,可以使我们将SQL语句写在配置文件

学会改变自己——才能突破 4822

AutoSAR系列讲解(入门篇)2.1-AppL概述

该章主要是讲解SWC是如何在ECU中分布的

雪云飞星的博客 4万+

第4章-上下文管理-对话历史记忆系统与窗口优化-《Agentic AI 智能体应用开发》

当上下文窗口接近极限时,需要对已有内容进行压缩。压缩不是简单的截断——你需要保留核心语义,去除冗余。# Python: 对话摘要压缩# 使用 Haiku 做摘要任务,成本最低"""将一段对话历史压缩为摘要"""system="你是一个对话摘要专家。请生成简洁但有信息量的摘要。",f"'用户'

AI天才研究院 250

IBATIS总结

iBATIS 学习总结 一、        了解iBATIS 1.什么是iBATIS “一个映射层,在对象和数据库间传递数据,并保持两者与映射层本身独立”  iBatis 不是直接在类和数据表或字段与列之间进行关联,而是把SQL语句的参数和返回结果映射至类。iBatis是出于类和数据表之间的一个中间层。这使得它在类和数据表之间进行映射时更加灵活。 iBATIS 是把SQL语句的参数和返回

duci2的专栏 2505

Allegro孔和线被做到器件里面如何解锁操作指导

在做PCB设计的时候,会遇到孔和线被做到器件的情况,当需要移动器件的时候,孔和线也会跟着移动。孔和线被做到器件里面如何解锁操作指导。

weixin_54787054的博客 1145

iBATIS入门简介

一、iBATIS教程之iBATIS介绍: iBATIS是什么呢?相对于Hibernate和Apache OJB等“一站式”ORM解决方案而言,iBATIS是一种“半自动化”的ORM实现。 这个框架将让你能够更好的在JAVA应用中设计和实现实体层。这个框架有两个主要的组成部分,一个是SQL Maps,另一个是Data Access Objects。另外还包括一些可能很有用的工具。

冷丶Feng 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ibatis 框架介绍及使用详解

 iBATIS 是什么?这一节将描述 iBATIS 中的单独的 API,以及为什么您可能使用它们,并了解 iBATIS 优于其他数据库映射框架的优点。iBATIS 框架简言之,iBATIS 由两个单独的框架组成。可以将 Data Mapper 框架专门用于 OR 映射,OR 映射是 Java 域对象到数据库中关系表的映射。DAO 框架为应用程序提供了一个简洁一致的访问基

xiemeikj的专栏 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ibatis 使用文档 (上篇)

(代码下载地址:http://download.youkuaiyun.com/detail/partner4java/4760043) iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。 创建于2002年,后很快加入了Apache,但是2010年又易主到google code,并改名为MyBatis。 本篇文章主要是基于iBATIS来进行展示,后面会再发

java相关技术(partner4java专栏)希望对您的学习有所帮助 4286

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

iBATIS总结

1.1作者       Clinton Begin,很牛X的名字1.2背景故事    Clinton Begin于2001年启动iBATIS项目,最先的焦点是发展密码软件解决方案。第一个iBATIS产品是Secrets,是一个象PGP的个人数据加密器和签名工具。Secrets完全用Java编写并在一个开源许可下发布。    在发布Secrets Java版后不久,iBATIS项目陷入困境转而关注W...

mno2330的博客 910

Spring与iBATIS的集成

iBATIS似乎已远离众说纷纭的OR框架之列,通常人们对非常流行的Hibernate情有独钟。但正如Spring: A Developers Notebook作者Bruce Tate 和Justin Gehtland所说的那样,与其他的OR框架相比,iBATIS独辟蹊径:“iBATIS不是试图从根本上掩盖SQL,实际上,它是在拥抱SQL。”但别犯愁:SQL本身具备了一些重要的功能,并且通过模板的

tanlier1的专栏 1350

iBATIS框架源码剖析

iBATIS框架源码剖析 基本信息 作者: 任钢    出版社:电子工业出版社 ISBN:9787121108723 上架时间:2010-7-2 出版日期:2010 年6月 开本:16开 页码:510 更多详细信息请查看:http://www.china-pub.com/196843更有精彩样张抢先试读:http://www.china-pub.com/ureader/product.a...

weixin_33841503的博客 163

iBATIS SQL Maps(一)

前段时间写了些 Hibernate 方面的系列文章,网友们反映还不错。在接下来的时间里,我将会引入另外一种 O/R Mapping 解决方案——iBATIS,本系列将沿用 Hibernate 系列文章的风格。什么是 iBATIS ?    和众多的 SourceForge 开源项目一样,iBATIS 曾经也是其中的一员。在2004年11月3日成功地成为了 Apache Incubator 下的子项

成都心情 7239

ibatis使用文档(上篇)

iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。 创建于2002年,后很快加入了Apache,但是2010年又易主到google code,并改名为MyBatis。 本篇文章主要是基于iBATIS来进行展示,后面会再发一篇和MyBatis的对比。 (本文大多摘自《iBATIS in action》一书,若有时间学习此书,建议不要看本文--因

Ltw518的专栏 2797

iBATIS In Action (三 )iBATIS的安装和配置

译注:本章讲解的是iBATIS的安装和配置,原书使用的是Java版本,与.NET版本的安装、配置过程不尽相同,因此这里直接就.NET版本进行说明。主要参考的是iBATIS官方的DataMapper Guide文档,本章的配置主要针对DataMapper,DataAccess的配置将出现在第10章。 iBATIS的安装过程快速而简单。它是一个类库,而不是应用程序,所以实际上并不需要安装,但要在应...

weixin_30471065的博客 221
上一篇: Understand the difference between IN and EXISTS in subqueries
下一篇: Hibernate VS iBATIS
Influence
博客等级 码龄20年 3粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值