91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MyBatis懶加載如何實現

發布時間:2022-04-27 13:45:13 來源:億速云 閱讀:327 作者:iii 欄目:開發技術

這篇文章主要介紹“MyBatis懶加載如何實現”,在日常操作中,相信很多人在MyBatis懶加載如何實現問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”MyBatis懶加載如何實現”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

懶加載 ,也稱為嵌套查詢

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

       Mybatis 一對一關聯的 association 和一對多的 collection 可以實現懶加載。懶加載時要 使用resultMap,不能使用 resultType 。

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

MyBatis懶加載如何實現

通過deptId 與 部門表 id 關聯

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

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

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

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();   //關閉

查詢結果 :

MyBatis懶加載如何實現

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

查詢部門 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懶加載如何實現”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

栖霞市| 陈巴尔虎旗| 东丽区| 江孜县| 陵川县| 连南| 屏边| 合山市| 孝感市| 四子王旗| 宜良县| 梁河县| 彭州市| 昭苏县| 达孜县| 文成县| 临桂县| 博湖县| 河津市| 镇江市| 石台县| 蓝山县| 边坝县| 南郑县| 嘉义市| 黄龙县| 开阳县| 封开县| 上高县| 响水县| 洮南市| 凌海市| 宁南县| 濮阳市| 长治县| 大连市| 淄博市| 龙陵县| 蛟河市| 开封市| 房产|