對映兩表之間的關係通過兩個
和兩個元素來完成,用
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中操作檔案的類如下...