Mybatis延遲載入

2021-10-03 09:05:23 字數 1139 閱讀 3183

目的:延遲載入其實就是為了推遲巢狀查詢時機,避免一些無謂的效能浪費。

如有兩張表,good與goodstype是一對多關係,乙個goodstype可以對應多個good。當想要查詢goodstype表以及每種typename對應的goods時,及時載入(aggressivelazyloading)會立即執行所有sql語句,一次性返回所有結果。但是如果後續沒有呼叫每種typename對應的goods時,這就造成了效能開銷。而這時如果使用延遲載入,sql會先執行查詢goodstype的語句,當後續需要呼叫typename對應的goods時,則才繼續呼叫sql語句查詢good。

1.編寫實體層

public class good 

public class goodstype

2.編寫spring配置檔案

配置資料來源

3.編寫mybatis配置檔案

@repository

public listall();

public listquerygoodsbygoodstype_id();

}@repository

public listall();

public listquerygoodsbystype();}

5.編寫測試類

public class testmybatis 

//這時遍歷goodstype中goods的值,發現原來為null的goods屬性值發生改變,原因就是啟用了延遲載入,在需要呼叫時才執行後續的sql語句。

for(goodstype i:gs) }}

}

6.實驗結果

後續呼叫goods屬性時,屬性值發生改變。

Mybatis延遲載入

現在有這麼乙個需求,要查詢所有的訂單,並且獲得該訂單的詳細資訊。如果一次性把所有需要的資料都請求到,那麼對伺服器和資料庫的開銷會很大,所以可以先載入訂單資訊,需要用到訂單詳情的時候再請求詳情資料。那麼就要用到mybatis的延遲載入 name lazyloadingenabled value tru...

mybatis延遲載入

舉個例子 如果查詢訂單並且關聯查詢使用者資訊。如果先查詢訂單資訊即可滿足要求,當我們需要查詢使用者資訊時再查詢使用者資訊。把對使用者資訊的按需去查詢就是延遲載入。所以延遲載入即先從單錶查詢 需要時再從關聯表去關聯查詢,大大提高資料庫效能,因為查詢單錶要比關聯查詢多張表速度要快。我們來對比一下 關聯查...

mybatis延遲載入

在mybatis中,通常會進行多表聯合查詢,但是有的時候並不會立即用到所有的聯合查詢結果,此時需要一種機制,當需要的時候再查詢,這種 按需查詢 的機制,就可以使用延遲載入來實現。延遲載入可以做到,先從單錶查詢,需要時再從關聯表關聯查詢,這樣可以大大提高資料庫的效能,因為查詢單錶要比關聯查詢多張表速度...