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

Mybatis中的延遲加載詳細(xì)解析

 更新時(shí)間:2023年12月21日 11:02:56   作者:暴躁的程序猿啊  
這篇文章主要介紹了Mybatis中的延遲加載詳細(xì)解析,延遲加載就是在真正需要使用數(shù)據(jù)時(shí)才發(fā)起查詢,不用的時(shí)候不進(jìn)行查詢,按需加載(懶加載),需要的朋友可以參考下

一、什么叫延遲加載、立即加載

1.什么是延遲加載 在真正需要使用數(shù)據(jù)時(shí)才發(fā)起查詢,不用的時(shí)候不進(jìn)行查詢。按需加載(懶加載)

2. 什么是立即加載 不管用不用,只要一調(diào)用方法,馬上發(fā)起查詢。

二、Mybatis中的延遲加載

需求: 在一對(duì)多中,當(dāng)我們有一個(gè)用戶,它有10個(gè)角色。 在查詢用戶時(shí),用戶下的角色信息應(yīng)該是,什么時(shí)候使用,什么時(shí)候查詢的。

在查詢角色時(shí),賬戶的所屬用戶信息應(yīng)該是隨著賬戶查詢時(shí)一起查詢出來。

在對(duì)應(yīng)的四種表關(guān)系中: 一對(duì)多,多對(duì)一,一對(duì)一,多對(duì)多 一 對(duì)多,多對(duì)多:通常情況下我們都是采用延遲加載。

多對(duì)一,一對(duì)一:通常情況下我們都是采用立即加載。

一對(duì)一延遲加載

例:以用戶和賬戶關(guān)系為例,查詢一個(gè)賬戶時(shí)顯示當(dāng)前賬戶的所屬用戶 查詢方法

1.dao層接口

public interface IAccountDao {
    /**
     * 查詢所有賬戶,同時(shí)還要獲取到當(dāng)前賬戶的所屬用戶信息
     * @return
     */
    List<Account> findAll();
    }

2.映射文件:

<resultMap id="accountUserMap" type="account">
        <id property="id" column="id"></id>
        <result property="uid" column="uid"></result>
        <result property="money" column="money"></result>
        <!-- 一對(duì)一的關(guān)系映射:配置封裝user的內(nèi)容
        select屬性制定的內(nèi)容:查詢用戶的唯一標(biāo)識(shí)
         column屬性指定的內(nèi)容:用戶根據(jù)id時(shí),所需要的參數(shù)值的值-->
        <association property="user" column="uid" javaType="user" select="com.rpf.dao.IUserDao.findById"></association>
    </resultMap>
    <!-- 查詢所有 -->
    <select id="findAll" resultMap="accountUserMap">
        select * from account
    </select>

3.Mybatis主配置文件配置開啟懶加載

<!--加入settings-->
   <settings>
        <!--開啟Mybatis支持延遲加載-->
        <setting name="lazyLoadingEnabled" value="true"/>
        <setting name="aggressiveLazyLoading" value="false"></setting>
    </settings>

4.測(cè)試

@Test
 public void testFindAll(){
        List<Account> accounts = accountDao.findAll();
    }

效果圖 沒開啟延遲加載之前執(zhí)行了三條

在這里插入圖片描述

開啟了延遲加載后 執(zhí)行了一條語(yǔ)句

在這里插入圖片描述

一對(duì)多實(shí)現(xiàn)延遲加載

1. dao層接口 List findAll();

2.映射文件

//user
  <resultMap id="userAccountMap" type="user">
        <id property="id" column="id"></id>
        <result property="username" column="username"></result>
        <result property="address" column="address"></result>
        <result property="sex" column="sex"></result>
        <result property="birthday" column="birthday"></result>
        <!-- 配置user對(duì)象中accounts集合的映射 -->
        <collection property="accounts" ofType="account" select="com.rpf.dao.AccountDao.findAccountByUid" column="id"></collection>
    </resultMap>
    <!-- 查詢所有 -->
    <select id="findAll" resultMap="userAccountMap">
        select * from user
    </select>
    <!-- 根據(jù)id查詢用戶 -->
    <select id="findById" parameterType="INT" resultType="user">
        select * from user where id = #{uid}
    </select>
<!-- 根據(jù)用戶id查詢賬戶列表 account -->
    <select id="findAccountByUid" resultType="account">
        select * from account where uid=#{uid}
    </select>

3.測(cè)試類:

  @Test
    public void testFindAll(){
        List<User> users = userDao.findAll();
    }

只查詢了用戶并沒有查用戶下賬戶的信息

在這里插入圖片描述

到此這篇關(guān)于Mybatis中的延遲加載詳細(xì)解析的文章就介紹到這了,更多相關(guān)Mybatis延遲加載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java類中字段可以不賦予初始值的原因分析

    Java類中字段可以不賦予初始值的原因分析

    這篇文章主要介紹了Java類中字段可以不賦予初始值的原因分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java設(shè)計(jì)模式中的策略模式詳細(xì)解析

    Java設(shè)計(jì)模式中的策略模式詳細(xì)解析

    這篇文章主要介紹了Java設(shè)計(jì)模式中的策略模式詳細(xì)解析,所謂策略模式,指的是做某一件事時(shí)有多種選擇(即策略),且不同的策略之間相互獨(dú)立,而且無論使用哪種策略,得到的結(jié)果都是相同的,需要的朋友可以參考下
    2023-12-12
  • 淺談對(duì)于DAO設(shè)計(jì)模式的理解

    淺談對(duì)于DAO設(shè)計(jì)模式的理解

    這篇文章主要介紹了淺談對(duì)于DAO設(shè)計(jì)模式的理解,小編覺得挺不錯(cuò)的,這里分享給大家,供需要的朋友參考。
    2017-10-10
  • idea離線使用jrebel的超詳細(xì)教程

    idea離線使用jrebel的超詳細(xì)教程

    IDEA上原生是不支持熱部署的,一般更新了 Java 文件后要手動(dòng)重啟 Tomcat 服務(wù)器,才能生效,下面通過本文給大家分享idea離線使用jrebel的超詳細(xì)教程(親測(cè)有效),感興趣的朋友一起看看吧
    2020-12-12
  • java實(shí)現(xiàn)文件上傳到服務(wù)器

    java實(shí)現(xiàn)文件上傳到服務(wù)器

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)文件上傳到服務(wù)器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • 實(shí)例化JFileChooser對(duì)象報(bào)空指針異常問題的解決辦法

    實(shí)例化JFileChooser對(duì)象報(bào)空指針異常問題的解決辦法

    今天小編就為大家分享一篇關(guān)于實(shí)例化JFileChooser對(duì)象報(bào)空指針異常問題的解決辦法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • 詳解Spring AOP 實(shí)現(xiàn)“切面式”valid校驗(yàn)

    詳解Spring AOP 實(shí)現(xiàn)“切面式”valid校驗(yàn)

    本篇文章主要介紹了詳解Spring AOP 實(shí)現(xiàn)“切面式”valid校驗(yàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • Java實(shí)現(xiàn)樹形結(jié)構(gòu)的示例代碼

    Java實(shí)現(xiàn)樹形結(jié)構(gòu)的示例代碼

    由于業(yè)務(wù)需要,后端需要返回一個(gè)樹型結(jié)構(gòu)給前端,包含父子節(jié)點(diǎn)的數(shù)據(jù)已經(jīng)在數(shù)據(jù)庫(kù)中存儲(chǔ)好。本文將為大家分享Java現(xiàn)樹形結(jié)構(gòu)的示例代碼,需要的可以參考下
    2022-05-05
  • Java的常見批量操作方法及注意事項(xiàng)

    Java的常見批量操作方法及注意事項(xiàng)

    Java作為一種強(qiáng)大的編程語(yǔ)言,提供了多種方法來有效地進(jìn)行批量數(shù)據(jù)處理,這篇文章主要介紹了Java的常見批量操作方法及注意事項(xiàng)的相關(guān)資料,需要的朋友可以參考下
    2025-06-06
  • SpringSecurity實(shí)現(xiàn)多種身份驗(yàn)證方式

    SpringSecurity實(shí)現(xiàn)多種身份驗(yàn)證方式

    本文主要介紹了SpringSecurity實(shí)現(xiàn)多種身份驗(yàn)證方式,包括表單的認(rèn)證、HTTP基本認(rèn)證、HTTP摘要認(rèn)證、證書認(rèn)證、OpenIDConnect或OAuth2.0的認(rèn)證、記住我功能和LDAP認(rèn)證,感興趣的可以了解一下
    2025-03-03

最新評(píng)論

桂林市| 南郑县| 宜兴市| 林甸县| 泽州县| 东莞市| 凤台县| 佛冈县| 天水市| 康平县| 永城市| 临泉县| 南木林县| 昆明市| 康马县| 敖汉旗| 尼木县| 泾川县| 通州市| 泉州市| 英山县| 金山区| 公主岭市| 丰宁| 汤阴县| 荔波县| 毕节市| 花垣县| 加查县| 威宁| 榆林市| 自贡市| 宜昌市| 寻乌县| 清远市| 安吉县| 东阿县| 中山市| 姜堰市| 礼泉县| 千阳县|