關于 Mybatis 設置懶加載無效的問題
看了 mybatis 的教程,講到關于mybatis 的懶加載的設置:
只需要在 mybatis 的配置文件中設置兩個屬性就可以了:
<settings> <!-- 打開延遲加載的開關 --> <setting name="lazyLoadingEnabled" value="true" /> <!-- 將積極加載改為消息加載即按需加載 --> <setting name="aggressiveLazyLoading" value="false" /> </settings>
但是經過測試之后發現是無效的,經過一番折騰,發現是因為我在測試的時候,調用了查詢出來的對象的 toString 方法,所以觸發了一次懶加載:
EmployeeMapper mapper = session.getMapper(EmployeeMapper.class); Employee employee = mapper.selectEmployee(1); System.out.println(employee);
后來在配置文件中加入了這個設置:
<setting name="lazyLoadTriggerMethods" value=""/>
再試一遍,問題解決了
附上文檔上的說明:
lazyLoadTriggerMethods:指定哪個對象的方法觸發一次延遲加載。默認值:equals,clone,hashCode,toString
所以,當我打印對象時,由于觸發了 toString 方法,所以觸發了一次懶加載
Ps:在 Employee 中關聯了 Department 對象,但是為了測試懶加載,我在 Employee 的toString 方法中并沒有調用 Department 這個屬性
精誠所至,金石為開。

浙公網安備 33010602011771號