新聞中心
要了解iBATIS映射文件基礎(chǔ),首先我們來看,iBATIS的核心就在于映射文件(Data Map XML File)。在映射文件里可以定義包括要執(zhí)行各種SQL語句,存儲(chǔ)過程,輸入?yún)?shù)映射,返回結(jié)果映射,緩存機(jī)制,并且能通過幾種相對比較復(fù)雜的配置實(shí)現(xiàn)對象之間的關(guān)聯(lián)關(guān)系和延遲加載。這也是iBATIS區(qū)別ORM框架的,具備更靈活性,更高性能的關(guān)鍵所在。

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供宿州網(wǎng)站建設(shè)、宿州做網(wǎng)站、宿州網(wǎng)站設(shè)計(jì)、宿州網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、宿州企業(yè)網(wǎng)站模板建站服務(wù),十多年宿州做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
配置文件可以寫得很簡單,也可以很復(fù)雜。復(fù)雜配置文件也是出于更好的設(shè)計(jì),更好性能,更好擴(kuò)展性方面的目的。再復(fù)雜的配置文件也是有限的,一個(gè)映射文件包括:Mapped Statements、Parameter Maps、Result Maps、Cache Models幾個(gè)主要的配置,還包括命名空間的配置,類型別名的配置。
iBATIS映射文件1.Mapped Statements :
顧名思義就是映射的語句聲明。它是整個(gè)iBATIS配置核心的核心,真正將被執(zhí)行的SQL語句(或存儲(chǔ)過程)都是必須在這里被顯式聲明。在Mapped Statements里可以包含有:statement、select、insert、update、delete、procedure這6種不同的語句類型。從詞面理解相信就可以了解到這些類型功能的一大半了。statement可以包含所有類型的SQL語句(存儲(chǔ)過程),它是一個(gè)泛泛的語句配置,沒特別明確的職責(zé),相反,其它5種類型的語句配置就是專門負(fù)責(zé)各種不同的SQL語句。下面這張圖列出了各種類型的語句的不同職責(zé)和調(diào)用方法。
Mapped Statements語句調(diào)用圖
iBATIS映射文件2.Parameter Maps :
參數(shù)映射的配置,它是被用來向一個(gè)語句(statement)提供所需參數(shù)的配置。每一個(gè)Parameter Maps都有一個(gè)自己的ID,在需要的時(shí)候需要在statement 的 parameterMap屬性中提供它的ID。但是對一個(gè)語句來說,它并不是必須,在iBATIS中還支持內(nèi)聯(lián)參數(shù)(Inline Parameter Maps)的形式,我們不需單獨(dú)寫一個(gè)Parameter Maps配置,只需要向parameterClass提供參數(shù)的類型,可以是元數(shù)據(jù)類型,復(fù)合數(shù)據(jù)類型,IDictionary數(shù)型的弱類型對象(使用key,value的鍵值對)。在內(nèi)部訪問數(shù)據(jù)類型的時(shí)候只使用#property#的形式訪問對應(yīng)的屬性值。
注意:在任何地方使用到的parameterClass類型如果是一個(gè)元數(shù)據(jù)類型(int,string etc),都需要使用#value#的形式的來訪問它的值。
iBATIS映射文件3.Result Maps :
返回結(jié)果的映射關(guān)系配置,就是列與屬性的對應(yīng)關(guān)系。在statement中使用resultMap屬性來指定一個(gè)結(jié)果映射。對一個(gè)statement來說,resultMap也不是必須的,同樣的,它仍然可以被resultClass給代替,因?yàn)槿绻祷爻鼋Y(jié)果數(shù)據(jù)集的列名跟數(shù)據(jù)對象的屬性相同的話,它會(huì)自動(dòng)去匹配,但是它不保證所有列都被會(huì)被正確映射(當(dāng)某列名在對象中找不對應(yīng)的屬性名,這列值將不被處理)。而resultMap則不同,如果已經(jīng)在resultMap中定義將要使用到列或?qū)傩栽诮Y(jié)果集或數(shù)據(jù)對象中不存在,將會(huì)被認(rèn)為是錯(cuò)誤的,將會(huì)拋出異常。通過上面的表可以看到insert,update,delete三種語句類型是沒有resultMap和resultClass,因?yàn)樵瓌t上來說,它們的操作是沒有必要返回結(jié)果集。
注意:如果在一個(gè)statement中同時(shí)指定了resultMap和resultClass屬性的話,那將會(huì)優(yōu)先使用resultMap。同時(shí)result Map也是一個(gè)實(shí)現(xiàn)對象復(fù)雜查詢功能的重要手段,如:result map的繼承(與discriminator配合使用),對象的1..1、1..N關(guān)系查詢。
iBATIS映射文件4.Cache Model :
緩存模型。使用在Cache Model中定義好的緩存機(jī)制,只需在查詢語句配置的cacheModel屬性就可以很容易地緩存查詢返回的數(shù)據(jù)集。在iBATIS中提供了三種的類型的緩存模式(Memory,LRU,FIFO)算法。三種算法主要在于靜態(tài)過期策略上的不同,而它們都有相同的動(dòng)態(tài)過期依賴策略,即可以設(shè)置執(zhí)行哪些statement時(shí),緩存過期。
注意:iBATIS的緩存模型正常情況是非常好用的,但是因?yàn)榫彺孢^期策略上的封裝性,它在多個(gè)服務(wù)器,負(fù)載平衡場景下還是有它的局限性。
iBATIS映射文件基礎(chǔ)就介紹到這里,希望通過這樣的介紹,使你能夠更好的了解到iBATIS映射文件的情況。
網(wǎng)站標(biāo)題:iBATIS映射文件基礎(chǔ)淺談
當(dāng)前鏈接:http://www.dlmjj.cn/article/dpgcpes.html


咨詢
建站咨詢
