欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mybatis中的延遲加載詳細解析

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

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

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

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

二、Mybatis中的延遲加載

需求: 在一對多中,當我們有一個用戶,它有10個角色。 在查詢用戶時,用戶下的角色信息應該是,什么時候使用,什么時候查詢的。

在查詢角色時,賬戶的所屬用戶信息應該是隨著賬戶查詢時一起查詢出來。

在對應的四種表關系中: 一對多,多對一,一對一,多對多 一 對多,多對多:通常情況下我們都是采用延遲加載。

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

一對一延遲加載

例:以用戶和賬戶關系為例,查詢一個賬戶時顯示當前賬戶的所屬用戶 查詢方法

1.dao層接口

public interface IAccountDao {
    /**
     * 查詢所有賬戶,同時還要獲取到當前賬戶的所屬用戶信息
     * @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>
        <!-- 一對一的關系映射:配置封裝user的內容
        select屬性制定的內容:查詢用戶的唯一標識
         column屬性指定的內容:用戶根據id時,所需要的參數值的值-->
        <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.測試

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

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

在這里插入圖片描述

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

在這里插入圖片描述

一對多實現延遲加載

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對象中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>
    <!-- 根據id查詢用戶 -->
    <select id="findById" parameterType="INT" resultType="user">
        select * from user where id = #{uid}
    </select>
<!-- 根據用戶id查詢賬戶列表 account -->
    <select id="findAccountByUid" resultType="account">
        select * from account where uid=#{uid}
    </select>

3.測試類:

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

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

在這里插入圖片描述

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

相關文章

  • Java?Spring?boot日期和時間統(tǒng)一設置三種方法

    Java?Spring?boot日期和時間統(tǒng)一設置三種方法

    時間和日期的統(tǒng)一設置在項目中經常是會遇到的,下面這篇文章主要給大家介紹了關于Java?Spring?boot日期和時間統(tǒng)一設置的三種方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-08-08
  • java算法導論之FloydWarshall算法實現代碼

    java算法導論之FloydWarshall算法實現代碼

    這篇文章主要介紹了算法導論之FloydWarshall算法實現代碼的相關資料,需要的朋友可以參考下
    2017-05-05
  • 關于maven全局配置文件settings.xml解析

    關于maven全局配置文件settings.xml解析

    這篇文章主要介紹了關于maven全局配置文件settings.xml,具有很好的參考價值,希望對大家有所幫助。
    2022-03-03
  • Java中CountDownLatch進行多線程同步詳解及實例代碼

    Java中CountDownLatch進行多線程同步詳解及實例代碼

    這篇文章主要介紹了Java中CountDownLatch進行多線程同步詳解及實例代碼的相關資料,需要的朋友可以參考下
    2017-03-03
  • SpringBoot中配置log4j2日志詳解

    SpringBoot中配置log4j2日志詳解

    這篇文章主要介紹了SpringBoot中配置log4j2日志詳解,Apache Log4j2 是對原先的 Log4j 項目的升級版本,參考了 logback 的一些優(yōu)秀的設計,并且修復了一些問題,因此帶來了一些重大的提升,需要的朋友可以參考下
    2023-11-11
  • java通過Idea遠程一鍵部署springboot到Docker詳解

    java通過Idea遠程一鍵部署springboot到Docker詳解

    這篇文章主要介紹了java通過Idea遠程一鍵部署springboot到Docker詳解,Idea是Java開發(fā)利器,springboot是Java生態(tài)中最流行的微服務框架,docker是時下最火的容器技術,那么它們結合在一起會產生什么化學反應呢?的相關資料
    2019-06-06
  • 使用springboot防止反編譯proguard+xjar

    使用springboot防止反編譯proguard+xjar

    介紹了三種代碼混淆和加密工具的使用方法:ProGuard、Xjar和ClassFinal,ProGuard用于混淆Java字節(jié)碼,Xjar提供對JAR包內資源的加密和動態(tài)解密,而ClassFinal則支持直接加密JAR包或WAR包,通過預研和實際操作
    2024-11-11
  • Java利用Hutool-Script封裝JS腳本執(zhí)行

    Java利用Hutool-Script封裝JS腳本執(zhí)行

    在?Java?開發(fā)中,有時需要動態(tài)執(zhí)行腳本代碼,比如?JavaScript?腳本,來實現一些靈活的業(yè)務邏輯,下面我們就來看看如何利用Hutool-Script模塊對Java的腳本執(zhí)行功能進行封裝吧
    2025-02-02
  • MyBatis使用接口映射的方法步驟

    MyBatis使用接口映射的方法步驟

    映射器是MyBatis中最核心的組件之一,本文主要介紹了MyBatis使用接口映射的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-07-07
  • Java實現提取不重復的整數實例

    Java實現提取不重復的整數實例

    這篇文章主要介紹了Java實現提取不重復的整數實例,具有一定借鑒價值,需要的朋友可以參考下
    2017-12-12

最新評論