Mybatis延遲載入引數配置

2022-08-03 19:42:11 字數 793 閱讀 1342

mybatis 延遲載入可以緩解資料庫關聯查詢出現的n+1問題。

影響到延遲載入的mybatis引數有 aggressivelazyloading / lazyloadingenabled / fetchtype

aggressivelazyloading 全域性引數 (總開關)

lazyloadingenabled 全域性引數 (控制所有)

fetchtype 區域性引數,association標籤用作巢狀查詢時的資料載入方式屬性 (控制某個)

aggressivelazyloading :延遲載入總開關,為 true 時立即載入,為 false 時允許延遲載入;預設為 true。

lazyloadingenabled :在 aggressivelazyloading  設定為 false 的情況下該引數的設定才有效果;

fetchtype :在 aggressivelazyloading  設定為 false 的情況下該引數的設定才有效果;覆蓋 lazyloadingenabled;

總的來說,如果要想設定延遲載入,首先要將 aggressivelazyloading 設定為 false,在 aggressivelazyloading 為 true 的情況下設定 lazyloadingenabled 和 fetchtype 是沒有意義的;在設定 aggressivelazyloading 為false,也就是開啟了總開關的前提下,再去設定 lazyloadingenabled 或者 fetchtype;而且 fetchtype 是會覆蓋全域性引數 lazyloadingenabled 的。

參考:《mybatis從入門到精通》

Mybatis延遲載入

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

mybatis延遲載入

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

mybatis延遲載入

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