1 IBatis 利用對映檔案描述物件間的關係

2021-04-13 11:00:20 字數 2430 閱讀 2892

對映兩表之間的關係通過兩個

和兩個元素來完成,用

vo來描述兩表之間的關係在

ibatis

框架中,其實仍然是通過

sql來完成的。

怎樣用sql來表達「一對多」和「多對一」的關係呢?可以利用主表的主鍵作為從表的外來鍵對從表查詢,得到的結果就是「一對多」的關係。那麼「多對一」呢?可以利用從表的外來鍵對主表進行查詢,只能得到惟一的一條記錄。因此,必須首先做兩個

sql。

1. 用sql

描述關係

parameterclass=」string」

resultmap=」get-attacksolution-result」>

select *

from fw_attacksolution

where parents_attack_event_code = #parents_attack_event_code#

parameterclass=」string」

resultmap=」get-pattackdocument-result」>

select *

from attack_document_parents

where parents_attack_event_code = #parents_attack_event_code#

利用元素來完成兩句

sql語句,

id為「

getattacksolution

」的一句,表示根據

attack_document_parents

表的主鍵到

fw_attacksolution

表中進行查詢,得到的是多條

fw_attacksolution

表中的記錄,這就是「一對多」的關係描述。

id為「

getpattackdocument

」的一句**,是根據

parents_attack_event_code

欄位到attack_document_parents

表中進行查詢,由於

parents_attack_event_code

欄位是attack_document_parents

表的主鍵,所以查詢結果必然只有一條,那這就可以表示「一對一」的關係。

2. 關係的對應

接著需要將這些

sql對映到物件上去。在

pattackdocument vo

中有乙個變數屬性的型別為

list

,名為attacksolution

,它表示了多個

attacksolution vo

的集合,那麼這在

sql對映到物件的

元素中怎麼表示呢?請看下面的**:

class=」struts.sample.cap11.sample1.entity.pattackdocument」>

column=」parents_attack_event_code」 select=」getattacksolution」/>

和沒有關係對應的

元素相比,多了乙個

select

屬性,這個

select

屬性在關係對映中的作用非常大,通過

select

屬性指定的標識可以惟一找到一句查詢

sql,而這句查詢

sql就表達了「一對多」的關係。這段**的解釋可以是這樣的:如果有查詢返回的是「

get-pattackdocument-result

」所指定的

vo,當將結果集寫入

vo的變數屬性時,得到乙個

jdbc

無法識別的

list

型別。於是底層框架就會查詢

select

屬性所指定的查詢

sql語句。執行這個子查詢,並將子查詢的結果集寫入

list

,返回到

vo的變數屬性

attacksolution中。

在attacksolution vo

中還有乙個

pattackdocument

的變數屬性,它的型別是

pattackdocument

,同樣也可以用

元素來宣告。

class=」struts.sample.cap11.sample1.entity.attacksolution」>

column=」parents_attack_event_code」 select=」getpattackdocument」/>

它的工作方式和之前所描述的沒有差別,惟一的區別是

select

屬性所指定的查詢

sql語句查詢結果必然是一條記錄,即乙個物件例項。

可見,select

屬性所指定的查詢

sql既可以是乙個集合,也可以是乙個物件。

IBatis 利用對映檔案描述物件間的關係

對映兩表之間的關係通過兩個和兩個元素來完成,用vo來描述兩表之間的關係在ibatis框架中,其實仍然是通過sql來完成的。怎樣用sql來表達 一對多 和 多對一 的關係呢?可以利用主表的主鍵作為從表的外來鍵對從表查詢,得到的結果就是 一對多 的關係。那麼 多對一 呢?可以利用從表的外來鍵對主表進行查...

ibatis對映檔案配置

id 指定了操作id,之後我們可以在 中通過指定操作id 來執行此節點所定 義的操作,如 sqlmap.update updateuser user id設定使得在乙個配置檔案中定義兩個同名節點成為可能 兩個update節 點,以不同id區分 parameterclass 指 定 了操作所需的引數型...

利用記憶體對映處理檔案

最近閒來無聊,想寫乙個簡單的檔案操作的類。但是由於經驗尚淺,對於類的設計總是把握的不是太好。c 畢竟是物件導向,而且自己又學過設計模式 個人覺得這個非常有用 當然也就希望自己設計的類有物件的意味了。學習的最好方法就是模仿,在我印象中c net框架中的類設計的很好,就借鑑一下。net中操作檔案的類如下...