對映兩表之間的關係通過兩個和兩個元素來完成,用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既可以是乙個集合,也可以是乙個物件。
1 IBatis 利用對映檔案描述物件間的關係
對映兩表之間的關係通過兩個 和兩個元素來完成,用 vo來描述兩表之間的關係在 ibatis 框架中,其實仍然是通過 sql來完成的。怎樣用sql來表達 一對多 和 多對一 的關係呢?可以利用主表的主鍵作為從表的外來鍵對從表查詢,得到的結果就是 一對多 的關係。那麼 多對一 呢?可以利用從表的外來鍵對...
ibatis對映檔案配置
id 指定了操作id,之後我們可以在 中通過指定操作id 來執行此節點所定 義的操作,如 sqlmap.update updateuser user id設定使得在乙個配置檔案中定義兩個同名節點成為可能 兩個update節 點,以不同id區分 parameterclass 指 定 了操作所需的引數型...
iBATIS 如何對sql 輸入引數 的對映
一 輸入引數的對映 1 parameterclass的使用 2 parametermap的使用 3 如何用map型別的物件作為傳入引數 b parameterclass b insert into t user values null,username password select identit...