溫馨提示×

溫馨提示×

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

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

mybatis怎么實(shí)現(xiàn)延遲加載

發(fā)布時(shí)間:2020-06-03 20:59:23 來源:億速云 閱讀:228 作者:Leah 欄目:編程語言

mybatis怎么實(shí)現(xiàn)延遲加載?針對這個(gè)問題,今天小編總結(jié)這篇有關(guān)mybatis實(shí)現(xiàn)延遲加載的文章,可供感興趣的小伙伴們參考借鑒,希望對大家有所幫助。

mybatis的延遲加載就是按需查詢,在需要的時(shí)候進(jìn)行查詢。

有兩張表:

圖書表(book):

mybatis怎么實(shí)現(xiàn)延遲加載

圖書類型表(category):

mybatis怎么實(shí)現(xiàn)延遲加載

他們之間通過類型id進(jìn)行關(guān)聯(lián),現(xiàn)在我要顯示圖書類型名,點(diǎn)擊類型名再顯示該類型下的所有圖書。

我們可以這樣做在類型實(shí)體類里面添加一個(gè)屬性存放該類型下的圖書

public class Category {
    private int cid;
    private String cname;
    private List<Book> books;

//省略get set
}

一次性的把圖書類型和圖書查詢出來,Sql語句如下:

   SELECT book.*,cname FROM book,category WHERE book.cid = category.cid

這樣做可以完成功能,但是我們只是需要顯示圖書類型,點(diǎn)擊的時(shí)候才顯示該類型的圖書,如果能做到開始只查詢類型,點(diǎn)擊類型的時(shí)候再查詢該類型的圖書,就不需要進(jìn)行兩表聯(lián)查了,可以提高查詢的效率,也比較節(jié)省內(nèi)存,這就是延遲加載。

延遲加載如何實(shí)現(xiàn)?

mybatis怎么實(shí)現(xiàn)延遲加載

1.  Category實(shí)體類同上

2.  UserDao.xml:

<mapper namespace="cn.xh.dao.UserDao">
    <select id="findCategoryWithLazingload" resultMap="categoryMap">
        select * from category
    </select>
    <resultMap id="categoryMap" type="cn.xh.pojo.Category">
        <id column="cid" property="cid"></id>
        <result column="cname" property="cname"></result>

        <collection property="books" column="cid" select="findBookWithLazy"></collection>
    </resultMap>

    <select id="findBookWithLazy" parameterType="int" resultType="cn.xh.pojo.Book">
        select * from book where cid = #{cid}
    </select>
</mapper>

只有我們點(diǎn)擊類型的時(shí)候才需要查詢該類型下的圖書,所以這里我們沒有用兩表聯(lián)查,而是將類型表的查詢語句和圖書表的查詢語句分開。

重點(diǎn)來看下這個(gè)配置:

<collection property="books" column="cid" select="findBookWithLazy"></collection>


collection,association是支持延遲加載的,這里的select屬性表示要執(zhí)行的sql語句,column表示執(zhí)行sql語句要傳的參數(shù),該參數(shù)為select from category查詢出來的字段cid,property=”books”表示查詢出來的結(jié)果給到books屬性。

關(guān)于mybatis實(shí)現(xiàn)延遲加載的方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI