mybatis中的resultMap元素和級聯

2021-09-11 19:20:42 字數 1336 閱讀 6139

mybaits中的級聯分為三種:

鑑別器:根據某些條件決定採用具體的實現方案

一對一:比如學生和學生證

一對多:比如班主任和學生

鑑別器配置:

select id,role_name ,note as note_ from t_role where id = #

測試程式:

public class test 

}

測試結果

一對一級聯配置:

select  id ,role_name as rolename ,note from t_role where id = #

這裡要注意一下:association中的column對應的是t_role表中的屬性,即以該屬性為條件查詢對應的user,響應的如果不在resultmap中配置作為依據的列,那麼其值就為預設值,所以如果需要要配置,這裡的id配置了,所以可以取到id,否則將取到預設值0

測試**:

public class test 

}

一對多級聯配置:

select name,age,hobbys from users where name = #

select id ,role_name as rolename ,note from t_role where id = #

role結構:

public class role
測試:

public class test 

}

n+1問題:如果現在有n個關聯關係完成了級聯,那麼只要再加入乙個關聯關係,就變成了n+1個級聯,所有的級聯sql都被執行,當我們需要的資料不那麼多的時候,就會浪費效能

解決方案:使用延遲載入

當第乙個引數設定為true時,就會將將所有的關聯資料都查出來,設為true時,只會查出當前sql的資料,至於關聯資料則不會查詢,當呼叫關聯資料的時候就會再次查詢

一級快取和二級快取問題:

一級快取就是對同乙個物件進行兩次獲取,那麼sql就執行一次,對於不同的sqlsession,需要乙個執行了commit操作才會開啟一級快取,一級快取實在sqlsession層面的

解決Mybatis中result標籤識別不了的情況

目錄 有個user類 在mybatis result標籤中這樣對映 這是就會發現proper程式設計客棧ty name 這個報紅 這是因為大寫不識別的原因,大寫開頭 它會變成 l 將name 重新www.cppcns.com寫成name就可以 id 和 re 都將乙個列的值對映到乙個簡單資料型別 字...

struts框架中的result

作為乙個剛剛進入開發行業的新人,我現在所接觸的服務端基本只和兩個地方打交道,第一是移動端,第二是web前端,通常對於移動端來講,我只需要告訴他,他拿到的資料是什麼,他存的資料成沒成功,那麼為了更加方便的和他溝通,我經常會使用returncode和returnmsg,來把在後台發生的事情告訴他,至於他...

Struts中配置的result

在struts.xml配置檔案中遇到了param,有點迷糊,上網查了查 似乎明白些了 jeecms loginframeinput 這裡的action 是log,他包含了登陸和退出,當系統在登入的時候就直接返回 就可以了 在退出的時候需要返回到登陸頁面,所以退出的時候是 到 action的,到act...