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

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

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

懶加載 ,也稱為嵌套查詢

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

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

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

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

 我們這里首先需要開啟一個設置

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

懶加載功能是默認開啟的, 但這里我們也需要設置這個屬性, 不設置則不會觸發(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();  //提交事務
   sqlSession.close();   //關閉

查詢結果 :

通過結果可以看到 , 當我們第一次輸出這個 employee 對象時, 部門是沒有被查詢的 , 而當我們需要使用到部門的信息時, 才會去觸發(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>

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

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

相關文章

  • Java 淺談 高并發(fā) 處理方案詳解

    Java 淺談 高并發(fā) 處理方案詳解

    這篇文章主要介紹了淺談Java高并發(fā)解決方案以及高負載優(yōu)化方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java基礎篇之List集合舉例詳解

    Java基礎篇之List集合舉例詳解

    Java中的List集合是一種常用的數(shù)據(jù)結構,它提供了一種有序、可重復的元素集合,下面這篇文章主要給大家介紹了關于Java基礎篇之List集合的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-03-03
  • java時間段查詢將00:00:00更換成23:59:59

    java時間段查詢將00:00:00更換成23:59:59

    本文主要介紹了java時間段查詢將00:00:00更換成23:59:59,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • Struts2 $,#,%詳解及實例代碼

    Struts2 $,#,%詳解及實例代碼

    這篇文章主要介紹了Struts2 $,#,%詳解及實例代碼的相關資料,需要的朋友可以參考下
    2016-12-12
  • java虛擬機指令dup詳解

    java虛擬機指令dup詳解

    這篇文章主要為大家詳細介紹了java虛擬機指令dup,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • maven加入spring框架的詳細教程

    maven加入spring框架的詳細教程

    這篇文章主要介紹了maven加入spring框架的詳細教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • 淺談Storm在zookeeper上的目錄結構

    淺談Storm在zookeeper上的目錄結構

    這篇文章主要介紹了淺談Storm在zookeeper上的目錄結構的相關內容,涉及storm使用zookeeper的操作以及詳細結構圖,具有一定參考價值,需要的朋友可以了解下。
    2017-10-10
  • 分布式系統(tǒng)中的降級熔斷設計問題面試

    分布式系統(tǒng)中的降級熔斷設計問題面試

    這篇文章主要為大家介紹了分布式系統(tǒng)中的降級熔斷設計問題面試解答,有需要的朋友可以借鑒參考下,希望能有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • SpringBoot配置log4j2的實現(xiàn)示例

    SpringBoot配置log4j2的實現(xiàn)示例

    SpringBoot中默認使用Logback作為日志框架,本文主要介紹了SpringBoot配置log4j2的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • 基于@RequestParam與@RequestBody使用對比

    基于@RequestParam與@RequestBody使用對比

    這篇文章主要介紹了@RequestParam與@RequestBody的使用對比,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10

最新評論