六、延遲加載

在數(shù)據(jù)與對象在進行mapping操作時,只有真正使用到該對象時,才進行mapping操作,以減少數(shù)據(jù)庫的開銷,從而提升系統(tǒng)性能。

但是Lazy Load也有缺點,在按需加載時會多次連接數(shù)據(jù)庫,增加數(shù)據(jù)庫的壓力,所以是否使用,需要看實際情況。
association和collection具備延遲加載功能

Mybatis默認(rèn)沒有開啟延遲加載,需要在全局配置文件中setting配置
lazyloadingEnabled:true使用延遲加載;false禁用延遲加載(默認(rèn)false)
aggressiveLazyLoading:true啟用時,完全加載(積極加載);false(按需加載);默認(rèn)為true

  • 全局配置文件代碼:
<settings>
  <!--打開延遲加載開關(guān)-->
  <setting name="lazyloadingEnabled" value="true"/>
  <!--改為按需加載-->
  <setting name="aggressiveLazyLoading" value="false"/>
</settings>
  • EmpMapper.java代碼:
    public List<Emp> getEmpLazy();
    public List<Dept> getDeppLazy();
  • EmpMapper.xml代碼:
 <select id="getEmpLazy" resultMap="_empdeptlazy">
    select * from emp
 </select>
 <resultMap type="Emp" id="_empdeptlazy" autoMapping="true">
    <association property="dept" javaType="Dept" select="getDeptByDeptno" column="deptno"></association>
 </resultMap>
 <select id="getDeptByDeptno" parameterType="int" resultType="Dept">
    select * from dept where deptno =#{deptno}
 </select>
 
 <select id="getDeppLazy" resultMap="_deptemplazy">
    select * from dept
 </select>
 <resultMap type="Dept" id="_deptemplazy" autoMapping="true">
    <id column="deptno" property="deptno"/>
    <collection property="emps" ofType="Emp" select="getEmpByDeptno" column="deptno"></collection>
 </resultMap> 
 <select id="getEmpByDeptno" parameterType="int" resultType="Emp">
    select * from emp where deptno =#{deptno}
 </select>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 簡介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 6,217評論 0 4
  • 原文鏈接:https://docs.spring.io/spring-boot/docs/1.4.x/refere...
    pseudo_niaonao閱讀 4,881評論 0 9
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 5,918評論 0 9
  • 要加“m”說明是MB,否則就是KB了. -Xms:初始值 -Xmx:最大值 -Xmn:最小值 java -Xms8...
    dadong0505閱讀 5,059評論 0 53
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 7,294評論 0 17

友情鏈接更多精彩內(nèi)容