偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

什么是iBATIS

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

什么是iBATIS呢?讓我們首先來看看它的概念:iBATIS就是我們通常所說的數(shù)據(jù)映射器(data mapper)。Martin Fowler在他的著作Patterns of Enterprise Application Architecture(Addison-Wesley Professional, 2002)中,對數(shù)據(jù)映射器模式是這樣描述的:

所謂映射器,是用于在對象和數(shù)據(jù)庫之間搬運(yùn)數(shù)據(jù),同時(shí)保證對象、數(shù)據(jù)庫以及映射器本身都相互獨(dú)立。

Martin在區(qū)分?jǐn)?shù)據(jù)映射以及元數(shù)據(jù)映射上,確實(shí)做了一件非常出色的工作,元數(shù)據(jù)映射正是適合使用對象/關(guān)系映射(O/RM)工具的地方。O/RM工具將數(shù)據(jù)庫表及其列映射為應(yīng)用中的類及字段?;蛘哒f,O/RM工具在數(shù)據(jù)庫的元數(shù)據(jù)與類的元數(shù)據(jù)之間建立起了一種映射關(guān)系。圖2-1展示了所謂的O/RM,它在一個(gè)類與數(shù)據(jù)庫表之間建立了映射關(guān)系。在這種情況下,類的每一個(gè)字段都被映射為數(shù)據(jù)庫中相應(yīng)表的唯一列。

iBATIS對象/關(guān)系映射 

圖2-1 對象/關(guān)系映射

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

iBATIS的SQL映射 

圖2-2 iBATIS的SQL映射

正如你在圖2-2中所看到的,iBATIS的映射層其實(shí)就是SQL。iBATIS讓你自己寫SQL語句,iBATIS負(fù)責(zé)在類的字段和數(shù)據(jù)庫表的列之間映射參數(shù)和結(jié)果?;谶@個(gè)原因,也考慮到與其他各種各樣的映射方式的區(qū)分,為避免混淆,iBATIS小組通常將所謂的“數(shù)據(jù)映射器”稱為SQL映射器(SQL mapper)。

什么是iBATIS之映射SQL語句

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

SQL語句可以被看作一個(gè)包含輸入輸出的函數(shù) 

圖2-3 SQL語句可以被看作一個(gè)包含輸入輸出的函數(shù)

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

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

代碼清單2-1  一個(gè)SQL映射的例子

什么是iBATIS之代碼程序 

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

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

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

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

當(dāng)然,iBATIS針對SQL映射還有許多高級選項(xiàng),特別是針對映射的返回結(jié)果。關(guān)于這些高級選項(xiàng),我們會在本書的第二部分“iBATIS基礎(chǔ)”中詳細(xì)討論?,F(xiàn)在,我們最重要的任務(wù)就是了解iBATIS的特性和好處,以及它如何工作。

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

【編輯推薦】

  1. iBATIS事務(wù)處理淺析
  2. iBatis和Hibernate的較量淺析
  3. iBATIS動態(tài)映射淺析
  4. iBATIS DAO框架淺析
  5. iBATIS的Log機(jī)制淺談
責(zé)任編輯:仲衡 來源: CSDN博客
相關(guān)推薦

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

內(nèi)存進(jìn)程線程

2009-07-22 10:42:59

iBATIS Cach

2009-07-15 17:58:07

iBATIS 動態(tài)映射

2009-07-16 10:23:30

iBATIS工作原理

2009-07-24 17:20:59

iBatis配置

2009-07-15 11:43:13

<iterate>標(biāo)簽

2020-07-14 14:59:00

控制反轉(zhuǎn)依賴注入容器

2017-12-19 21:29:58

物聯(lián)網(wǎng)區(qū)塊鏈大數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號