關於 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 這個屬性


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM