成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

什么是iBATIS

開發 后端
什么是iBATIS呢?那么本文將會從概念和具體的應用向你介紹什么是iBATIS。

什么是iBATIS呢?讓我們首先來看看它的概念: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,它在一個類與數據庫表之間建立了映射關系。在這種情況下,類的每一個字段都被映射為數據庫中相應表的唯一列。

iBATIS對象/關系映射 

圖2-1 對象/關系映射

iBATIS與之不同,它不是直接把類映射為數據庫表或者說把類的字段映射為數據庫列,而是把SQL語句的參數與結果(也即輸入和輸出)映射為類。正如你在本書的剩余部分中將會學到的,iBATIS在類和數據庫表之間建立了一個額外的間接層,這就為如何在類和數據庫表之間建立映射關系帶來了更大的靈活性,使得在不用改變數據模型或者對象模型的情況下改變它們的映射關系成為可能。其實我們這里討論的這個間接層就是SQL。SQL這個額外的間接層使得iBATIS能夠更好地隔離數據庫設計和應用中使用的對象模型。這就使得它們兩者之間的相關性能夠降至最少。圖2-2展示了iBATIS如何使用SQL映射數據。

iBATIS的SQL映射 

圖2-2 iBATIS的SQL映射

正如你在圖2-2中所看到的,iBATIS的映射層其實就是SQL。iBATIS讓你自己寫SQL語句,iBATIS負責在類的字段和數據庫表的列之間映射參數和結果。基于這個原因,也考慮到與其他各種各樣的映射方式的區分,為避免混淆,iBATIS小組通常將所謂的“數據映射器”稱為SQL映射器(SQL mapper)。

什么是iBATIS之映射SQL語句

任何一條SQL語句都可以看作是一個函數,有輸入輸出集合。輸入即參數(parameter),通常可以在SQL語句的WHERE子句中找到。輸出則是SELECT子句中指定的那些列。圖2-3描述了這個思想。

SQL語句可以被看作一個包含輸入輸出的函數 

圖2-3 SQL語句可以被看作一個包含輸入輸出的函數

這種方式的最大優點就在于SQL語句使得開發者能夠自己把握巨大的靈活性。他可以在不改變數據模型的前提下輕易地操縱數據以適應對象模型。甚至,開發者還可以通過數據庫內建的函數和存儲過程引入多表和結果集。總之,他們可以隨心所欲地利用SQL的強大能力。

iBATIS使用一個簡單的XML描述文件來映射SQL語句的輸入和輸出。代碼清單2-1給出了一個這樣的例子。

代碼清單2-1  一個SQL映射的例子

什么是iBATIS之代碼程序 

從以上代碼中我們看到了一條SELECT語句,它返回address表中的數據。從<select>元素的parameterClass屬性中我們可以看出該語句使用一個Integer對象作為參數,該參數是通過WHERE子句中的#id#符號標記的;從<select>元素的resultClass屬性我們還可以看出該語句的結果是一個Address類的實例,假設Address類的所有字段名與SELECT語句中指定的各個列的別名(通過as關鍵字)相同。例如,ADR_ID列別名為id,故會映射到Address類中名為id的字段上。不論你是否相信,要映射一個SQL語句使其接受一個Integer作為參數并返回一個Address對象作為結果,你要做的就是這些了。用于執行以上語句的Java代碼如下:

  1. Address address = (Address) sqlMap.queryForObject("getAddress"new Integer(5)); 

SQL映射這個概念具有很好的可移植性,可應用于任何一個功能完備的編程語言。例如,基于iBATIS.NET的C#代碼就與之前的Java代碼幾乎是一模一樣的:

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

當然,iBATIS針對SQL映射還有許多高級選項,特別是針對映射的返回結果。關于這些高級選項,我們會在本書的第二部分“iBATIS基礎”中詳細討論。現在,我們最重要的任務就是了解iBATIS的特性和好處,以及它如何工作。

什么是iBATIS就向你介紹到這里,希望通過介紹是你能對什么是iBATIS有所了解。

【編輯推薦】

  1. iBATIS事務處理淺析
  2. iBatis和Hibernate的較量淺析
  3. iBATIS動態映射淺析
  4. iBATIS DAO框架淺析
  5. iBATIS的Log機制淺談
責任編輯:仲衡 來源: CSDN博客
相關推薦

2009-07-15 15:47:49

iBATIS是什么

2009-07-21 11:12:00

iBATIS配置

2021-03-20 22:46:22

IaaSSaaSPaaS

2009-07-16 11:21:19

ibatis主鍵自動生成

2009-09-21 16:56:14

Hibernateibatis

2009-07-16 09:14:26

iBATIS DAO

2009-07-17 10:32:45

iBATIS MapB

2009-07-22 10:03:11

iBATIS Resu

2009-07-20 18:00:16

iBATIS DAO事

2009-07-16 17:01:32

ibatis dao

2009-07-17 16:38:42

ibatis批量update

2009-07-15 17:19:31

iBATIS Ecli

2023-09-01 13:49:00

內存進程線程

2009-07-22 10:42:59

iBATIS Cach

2009-07-15 17:58:07

iBATIS 動態映射

2009-07-16 10:23:30

iBATIS工作原理

2009-07-24 17:20:59

iBatis配置

2009-07-15 11:43:13

<iterate>標簽

2020-07-14 14:59:00

控制反轉依賴注入容器

2017-12-19 21:29:58

物聯網區塊鏈大數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲欧美日韩精品久久亚洲区 | 欧美日韩免费 | 国产一区二区三区精品久久久 | 精品一区二区三区四区在线 | 亚洲在线一区二区 | 秋霞av国产精品一区 | 成人在线电影在线观看 | 亚洲精品一区二区三区蜜桃久 | 久久99久久久久 | 天天综合永久 | 久久久久久影院 | 欧美精品一区二区免费视频 | 亚洲九色| 剑来高清在线观看 | 亚洲激情一级片 | 国产成人99久久亚洲综合精品 | 色婷婷综合在线观看 | 久久精品国产a三级三级三级 | 亚洲欧美日韩精品 | 国产精品日日做人人爱 | 久久这里有精品 | 草久在线 | 久久久久久久国产 | 日本天天操 | 国产精品一区二区久久 | 日本字幕在线观看 | 免费视频一区二区 | 日本91av视频 | 视频二区 | 亚洲精品久久久久中文字幕欢迎你 | 在线观看日韩av | 国产91久久久久 | 亚洲高清视频一区 | 久久国产精品首页 | 国产欧美精品一区二区三区 | 天天操天天摸天天爽 | 亚洲精品亚洲人成人网 | 欧美在线观看一区 | 国产视频1区 | 久久久久久九九九九 | 日韩欧美视频免费在线观看 |