Mybatis的延遲載入

2022-06-21 03:48:07 字數 1235 閱讀 3120

mybatis僅支援association關聯物件和collection關聯集合物件的延遲載入,association指的就是一對一,多對一,collection指的就是一對多,多對多查詢。在mybatis配置檔案中,可以配置是否啟用延遲載入lazyloadingenabled=true|false

實體:dept   emp

需要在dept中加入private listemplist;  和getter setter (即構造方法)

dao:

deptdao:

/*** 查詢所有部門

* @return

*/list

listall();

empdao:

/*** 根據部門編號獲取員工

* @param

deptno

* @return

*/list

listempbydeptno(int deptno);

配置檔案:

select *from dept

select empno,empname,salary from emp where deptno=#

主配置檔案:mybatis-config.xml  中的 settings

測試:

/**

* 測試延時載入

*/@test

public

void

testlistall()}}

catch

(exception e)

finally

}

如果下面**注釋掉,開啟懶載入,底層查詢資料庫時,只執行了部門查詢,如果不開啟懶載入,部門和該部門的員工都查詢了

if(depts!=null&&depts.size()>0)

}

association指的就是一對一,多對一:

/*實體加入*/

private

ictionaries ictionaries;

Mybatis延遲載入

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

mybatis延遲載入

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

mybatis延遲載入

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