java工程師進(jìn)階之MyBatis延遲加載的使用
什么是延遲加載?
延遲加載也叫懶加載、惰性加載,使⽤延遲加載可以提⾼程序的運(yùn)行效率,針對(duì)于數(shù)據(jù)持久層的操作, 在某些特定的情況下去訪問(wèn)特定的數(shù)據(jù)庫(kù),在其他情況下可以不訪問(wèn)某些表,從⼀定程度上減少了 Java 應(yīng)⽤與數(shù)據(jù)庫(kù)的交互次數(shù)。
查詢學(xué)⽣和班級(jí)的時(shí),學(xué)生和班級(jí)是兩張不同的表,如果當(dāng)前需求只需要獲取學(xué)shengsheng的信息,那么查詢學(xué) ⽣單表即可,如果需要通過(guò)學(xué)⽣獲取對(duì)應(yīng)的班級(jí)信息,則必須查詢兩張表。 不同的業(yè)務(wù)需求,需要查詢不同的表,根據(jù)具體的業(yè)務(wù)需求來(lái)動(dòng)態(tài)減少數(shù)據(jù)表查詢的⼯作就是延遲加載。
如何使用延遲加載?
1.在 config.xml 中開(kāi)啟延遲加載
<settings> <!-- 打印SQL--> <setting name="logImpl" value="STDOUT_LOGGING" /> <!-- 開(kāi)啟延遲加載 --> <setting name="lazyLoadingEnabled" value="true"/> </settings>
2.將多表關(guān)聯(lián)查詢拆分成多個(gè)單表查詢
StudentRepository中
public Student findByIdLazy(long id);
StudentRepository.xml
<resultMap id="studentMapLazy" type="entity.Student">
<id column="id" property="id"></id>
<result column="name" property="name"></result>
<association property="classes" javaType="entity.Classes" select="repository.ClassesRepository.findByIdLazy" column="cld">
</association>
</resultMap>
<select id="findByIdLazy" parameterType="long" resultMap="studentMapLazy">
-- select s.id ,s.name,c.id as cid,c.name as cname from student s,classes c where s.id =1 and s.cld=c.id;
select * from student where id=#{id};
</select>
ClassesRepository
public Classes findByIdLazy(long id);
<resultMap id="classesMap" type="entity.Classes">
<id column="cid" property="id"></id>
<result column="cname" property="name"></result>
<collection property="students" ofType="entity.Student">
<id column="id" property="id"></id>
<result column="name" property="name"></result>
</collection>
</resultMap>
以上就是java工程師進(jìn)階之MyBatis延遲加載的使用的詳細(xì)內(nèi)容,更多關(guān)于java之MyBatis延遲加載的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java二維數(shù)組指定不同長(zhǎng)度實(shí)例方法
在本篇內(nèi)容里小編給大家分享了一篇關(guān)于java二維數(shù)組指定不同長(zhǎng)度實(shí)例方法,有興趣的朋友們可以學(xué)習(xí)下。2021-03-03
java獲取文件擴(kuò)展名的方法小結(jié)【正則與字符串截取】
這篇文章主要介紹了java獲取文件擴(kuò)展名的方法,結(jié)合實(shí)例形式分析了使用正則與字符串截取兩種獲取擴(kuò)展名的操作技巧,需要的朋友可以參考下2017-01-01
Spring Boot LocalDateTime格式化處理的示例詳解
這篇文章主要介紹了Spring Boot LocalDateTime格式化處理的示例詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
java判斷兩個(gè)List<String>集合是否存在交集三種方法
這篇文章主要介紹了三種判斷Java中兩個(gè)List集合是否存在交集的方法,分別是使用retainAll方法、使用Stream和anyMatch以及使用Set提高性能,每種方法都有其適用場(chǎng)景和優(yōu)缺點(diǎn),需要的朋友可以參考下2025-03-03
SpringBoot項(xiàng)目啟動(dòng)時(shí)如何讀取配置以及初始化資源
這篇文章主要給大家介紹了關(guān)于SpringBoot項(xiàng)目啟動(dòng)時(shí)如何讀取配置以及初始化資源的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用SpringBoot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
詳解SpringBoot如何實(shí)現(xiàn)整合微信登錄
本文主要介紹了SpringBoot實(shí)現(xiàn)整合微信登錄的過(guò)程詳解,文中的示例代碼介紹的非常詳細(xì),對(duì)我們的學(xué)習(xí)過(guò)工作有一定的參考價(jià)值,需要的朋友可以關(guān)注下2021-12-12
SpringBoot使用Maven打包異常-引入外部jar的問(wèn)題及解決方案
這篇文章主要介紹了SpringBoot使用Maven打包異常-引入外部jar,需要的朋友可以參考下2020-06-06

