在mybatis中,通常會進行多表聯合查詢,但是有的時候並不會立即用到所有的聯合查詢結果,此時需要一種機制,當需要的時候再查詢,這種「按需查詢」的機制,就可以使用延遲載入來實現。
延遲載入可以做到,先從單錶查詢,需要時再從關聯表關聯查詢,這樣可以大大提高資料庫的效能,因為查詢單錶要比關聯查詢多張表速度快。
public class batchitem
public class customer
select * from batch
編寫resultmap
select * from customer where cus_id=#
上面的配置會被用來延遲載入的resultmap中的association呼叫,輸入引數就是association中column中定義的字段資訊。
在編寫測試方法之前,首先開啟延遲載入功能,在sqlconfig.xml中配置setting屬性
說明:
lazyloadingenabled設定全域性性懶載入,可設定的值為「false」和」true「。若為false,則所有相關聯的資料都會被初始化載入,否則會延遲載入相關的資料
aggressivelazyloading設定積極載入,可設定的值為false和true,當設定為true時,懶載入的物件可能被任何懶屬性全部載入。否則,每個屬性都按需載入。
測試方法:
@test
public void testlazyload() throws ioexception
//關閉sqlsession會話
sqlsession.close();
}
只有用到customer這個物件時才會載入它 Mybatis延遲載入
現在有這麼乙個需求,要查詢所有的訂單,並且獲得該訂單的詳細資訊。如果一次性把所有需要的資料都請求到,那麼對伺服器和資料庫的開銷會很大,所以可以先載入訂單資訊,需要用到訂單詳情的時候再請求詳情資料。那麼就要用到mybatis的延遲載入 name lazyloadingenabled value tru...
mybatis延遲載入
舉個例子 如果查詢訂單並且關聯查詢使用者資訊。如果先查詢訂單資訊即可滿足要求,當我們需要查詢使用者資訊時再查詢使用者資訊。把對使用者資訊的按需去查詢就是延遲載入。所以延遲載入即先從單錶查詢 需要時再從關聯表去關聯查詢,大大提高資料庫效能,因為查詢單錶要比關聯查詢多張表速度要快。我們來對比一下 關聯查...
Mybatis延遲載入
問 為什麼需要延遲載入呢?答 當你查詢的結果包含了所有屬性,可是在實際操作的時候只用到了其中一部分,那載入進來的資料就是多餘資料,只會占用記憶體。那如何做到在需要的時候載入包含物件屬性的屬性?兩個方法 第一種 全域性配置 關聯的值在使用的時候被延遲載入true name lazyloadingena...