最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MyBatis深入解讀懶加載的實現(xiàn)

 更新時間:2022年04月27日 11:04:59   作者:羨羨ˇ  
顧名思義,懶加載就是因為偷懶了,懶得加載了,只有使用的時候才進行加載。其實,懶加載也加延遲加載,主要以應(yīng)用與Mybatis的關(guān)聯(lián)查詢,按照設(shè)置的延遲規(guī)則,推遲對延遲對關(guān)聯(lián)對象的select查詢

懶加載 ,也稱為嵌套查詢

       需要查詢關(guān)聯(lián)信息時,使用 Mybatis 懶加載特性可有效的減少數(shù)據(jù)庫壓力, 首次查詢只查詢主表信息,關(guān)聯(lián)表的信息在用戶獲取時再加載。        

       Mybatis 一對一關(guān)聯(lián)的 association 和一對多的 collection 可以實現(xiàn)懶加載。懶加載時要 使用resultMap,不能使用 resultType 。

這里我們以員工表和部門表為例 

通過deptId 與 部門表 id 關(guān)聯(lián)

 我們這里首先需要開啟一個設(shè)置

<settings>
    <!--指定哪些方法去觸發(fā)延遲加載,hashCode,equals,clone,toString-->
    <setting name="lazyLoadTriggerMethods" value=""/>
</settings>

懶加載功能是默認(rèn)開啟的, 但這里我們也需要設(shè)置這個屬性, 不設(shè)置則不會觸發(fā)延遲加載功能

Employee selectOneEmployee(int id);

我們以查詢單個員工為例 , resultMap 與sql 如下

<!--定義resultMap-->
<resultMap id="employeeMap1" type="Employee">
   <id column="id" property="id"/>
   <result property="name" column="name"/>
   <result property="age" column="age"/>
   <!--fetchType為查詢的類型,這里選擇lazy  select為嵌套查詢-->
   <association property="dept" javaType="Dept" fetchType="lazy"
         select="selectDept" column="deptId">
   <result column="name" property="name"/>
   </association>
</resultMap>
<select id="selectOneEmployee" resultMap="employeeMap1">
   select id,name,age,deptId from employee where id=#{id}
</select>
<!--通過上一級sql提供的deptId查詢-->
<select id="selectDept" resultType="Dept">
   select name from dept where id=#{deptId}
</select>

此處一對一 ,我們使用<association>

java測試 : 

public static void main(String[] args) {
   SqlSession sqlSession= MybatisUtil.getSqlSession();
   EmployeeDao mapper=sqlSession.getMapper(EmployeeDao.class);
   Employee employee = mapper.selectOneEmployee(3);
   System.out.println(employee);
   System.out.println(employee.getDept());
   sqlSession.commit();  //提交事務(wù)
   sqlSession.close();   //關(guān)閉

查詢結(jié)果 :

通過結(jié)果可以看到 , 當(dāng)我們第一次輸出這個 employee 對象時, 部門是沒有被查詢的 , 而當(dāng)我們需要使用到部門的信息時, 才會去觸發(fā)這個查詢 

查詢部門 resultMap 與 sql如下: 

<resultMap id="deptMap1" type="Dept">
    <id column="id" property="id"/>
    <result column="name" property="name"/>
    <!--collection為一對多 , 這里一個部門包含多個員工-->
    <collection property="list" javaType="List" ofType="Employee"
          select="selectEmployee" fetchType="lazy" column="id">
    <result property="name" column="name"/>
    </collection>
</resultMap>
<select id="selectOneDept" resultMap="deptMap1">
    SELECT id,name FROM dept where id=#{id}
</select>
<select id="selectEmployee" resultType="Employee">
    select name from employee where deptId=#{id}
</select>

一對多,我們使用<collection>

懶加載就介紹到這里,感謝閱讀

到此這篇關(guān)于MyBatis深入解讀懶加載的實現(xiàn)的文章就介紹到這了,更多相關(guān)MyBatis懶加載內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java之Spring Boot創(chuàng)建和使用

    Java之Spring Boot創(chuàng)建和使用

    Spring 的誕生就是為了簡化 Java 程序的開發(fā)的.Spring Boot 的誕生就是為了簡化 Spring 程序開發(fā)的,對Springboot感興趣的同學(xué)可以借鑒本文
    2023-04-04
  • Jenkins初級使用過程中的異常處理

    Jenkins初級使用過程中的異常處理

    這篇文章主要為大家介紹了Jenkins初級使用過程中的異常處理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-04-04
  • SpringCloud URL重定向及轉(zhuǎn)發(fā)代碼實例

    SpringCloud URL重定向及轉(zhuǎn)發(fā)代碼實例

    這篇文章主要介紹了SpringCloud URL重定向及轉(zhuǎn)發(fā)代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • springboot詳解實現(xiàn)車險理賠信息管理系統(tǒng)代碼

    springboot詳解實現(xiàn)車險理賠信息管理系統(tǒng)代碼

    本系統(tǒng)基于Springboot開發(fā)實現(xiàn)了一個為用戶車險進行理賠信息管理的一個信息化管理系統(tǒng),核心的業(yè)務(wù)主要是用戶申請保險理賠,管理員審核進入理賠程序,事故調(diào)查員對事故進行調(diào)查和現(xiàn)場勘察,這其中共涉及到三類用戶,購買保險的客戶,事故調(diào)查員和系統(tǒng)管理員
    2022-06-06
  • springboot的controller層的常用注解說明

    springboot的controller層的常用注解說明

    這篇文章主要介紹了springboot的controller層的常用注解說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • java notify和notifyAll的對比

    java notify和notifyAll的對比

    這篇文章主要介紹了 java notify和notifyAll的對比的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • java實現(xiàn)對服務(wù)器的自動巡檢郵件通知

    java實現(xiàn)對服務(wù)器的自動巡檢郵件通知

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)對服務(wù)器的自動巡檢郵件通知,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • java學(xué)習(xí)粗略路線的方法

    java學(xué)習(xí)粗略路線的方法

    下面小編就為大家?guī)硪黄猨ava學(xué)習(xí)粗略路線的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • java實現(xiàn)圖像轉(zhuǎn)碼為字符畫的方法

    java實現(xiàn)圖像轉(zhuǎn)碼為字符畫的方法

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)圖像轉(zhuǎn)碼為字符畫的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Java包含抽象方法的枚舉類示例

    Java包含抽象方法的枚舉類示例

    這篇文章主要介紹了Java包含抽象方法的枚舉類,結(jié)合實例形式分析了Java包含抽象方法的枚舉類實現(xiàn)方法與相關(guān)操作技巧,需要的朋友可以參考下
    2019-08-08

最新評論

洛浦县| 礼泉县| 南郑县| 乐平市| 静乐县| 浦城县| 石门县| 邵阳市| 凯里市| 莱西市| 枣庄市| 阿城市| 昌图县| 潼关县| 梁平县| 巫溪县| 法库县| 琼中| 龙川县| 黄石市| 望江县| 鹿泉市| 宁南县| 静乐县| 咸宁市| 定西市| 佳木斯市| 靖宇县| 格尔木市| 大渡口区| 高阳县| 谷城县| 玉门市| 马公市| 灌南县| 深圳市| 静海县| 长宁区| 大连市| 卓资县| 朝阳市|