在多對
一、一對多、多對多查詢實際應用中可能會遇到這樣的情況:多個表的內容在乙個表裡,比如下面這個網頁結構
示意圖各個欄目,欄目下有子欄目,子欄目下有孫欄目,但是都屬於新聞欄目,比如我們想通過查詢sn得到下面的子欄目以及孫欄目,就需要用到自關聯查詢。
需求:查詢指定欄目及其下面的子欄目、孫欄目。
db表
實體類將其看作一方,然後關聯屬性是多方即setchildren;
介面: newslabel selectnewslabelbyid(int id);
對映檔案
測試類查詢欄目1得到的結果
查詢欄目2得到的結果
這時候問題就出現了,我們查詢欄目2時得到了其下的子欄目,但並沒有像我們需求提出的那樣,得到子欄目及其孫欄目,這就是自關聯查詢——多表連線查詢的乙個缺陷,解決這個問題我們可以通過多表單獨查詢得到。
多表單獨查詢:
對映檔案
其實這就是個遞迴,在查詢孫欄目時,再呼叫
查詢結果
很自然的解決了這個問題。
假如有這樣的需求:我們查詢指定欄目的子欄目和孫欄目,不包括這個欄目。
新建介面: listselectchildrenbyparent(int id);
(因為查詢出來是個集合型別)
對映檔案
mybatis關聯配置(一對多配置)
mybatis框架的關聯配置 首先假設我們資料庫中有兩個表,乙個表示move,另乙個是movetype,move裡面有乙個欄位typeid,與movetype表裡面的id相對應。相信大家已經看出來了,乙個movetype對應多個move,我們查詢move欄位的時候,必要的時候得顯示movetype的...
mybatis 關聯關係對映 一對多 ,多對多
一對多 用order訂單表,orderitem訂單項 來舉例 1.將資料表匯入資料庫中 3.修改order,orderitem實體類,建立實體對映關聯關係 一對多 多對一 一對多 乙個訂單對應多個訂單項 private listorderitems new arraylist 一對一 乙個訂單項對應...
雙向關聯多對多
inverse 反轉 1 inverse false 表示為主控方,主控方負責維護關聯關係,一般在一對多關係中,把多的一方設定為inverse false 2 lazy false表示是延遲載入,當為true時,啟動延遲載入,如兩個關聯a,b不延遲載入時可能載入a時候,也把b載入了,但你可能沒用b,...