溫馨提示×

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

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

Mybatis中的一對(duì)多舉例分析

發(fā)布時(shí)間:2021-11-16 15:11:52 來(lái)源:億速云 閱讀:136 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容介紹了“Mybatis中的一對(duì)多舉例分析”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

     一對(duì)多

        (1)類(lèi)別表不變化,新增加產(chǎn)品表,一個(gè)類(lèi)別下有多個(gè)產(chǎn)品

        (2)創(chuàng)建Product實(shí)體類(lèi)

private int id;
private String name;
private float price;
setter,getter,tostring

        (3)修改Category實(shí)體類(lèi),提供products的集合

private int id;
private String name;
List<Product> products;
setter,getter,tostring

        (4)暫時(shí)無(wú)需 Product.xml

        (5)修改Category.xml

    <mapper namespace="com.how2java.pojo">
        <resultMap type="Category" id="categoryBean">
            <id column="cid" property="id" />
            <result column="cname" property="name" />
     
            <!-- 一對(duì)多的關(guān)系 -->
            <!-- property: 指的是集合屬性的值, ofType:指的是集合中元素的類(lèi)型 -->
            <collection property="products" ofType="Product">
                <id column="pid" property="id" />
                <result column="pname" property="name" />
                <result column="price" property="price" />
            </collection>
        </resultMap>
     
        <!-- 關(guān)聯(lián)查詢(xún)分類(lèi)和產(chǎn)品表 -->
        <select id="listCategory" resultMap="categoryBean">
            select c.*, p.*, c.id 'cid', p.id 'pid', c.name 'cname',
            p.name 'pname' from category_ c left join product_ p on c.id = p.cid
        </select>   
    </mapper>

            通過(guò)left join關(guān)聯(lián)查詢(xún),對(duì)Category和Product表進(jìn)行關(guān)聯(lián)查詢(xún)。

            與前面的有所區(qū)別,這里不是用的resultType, 而是resultMap,通過(guò)resultMap把數(shù)據(jù)取出來(lái)放在對(duì)應(yīng)的 對(duì)象屬性里。

            注: Category的id 字段 和Product的id字段同名,Mybatis不知道誰(shuí)是誰(shuí)的,所以需要通過(guò)取別名cid,pid來(lái)區(qū)分。name字段同理。

        (6)在TestOneToMany中

        List<Category> cs = session.selectList("listCategory");
        for (Category c : cs) {
            System.out.println(c);
            List<Product> ps = c.getProducts();
            for (Product p : ps) {
                System.out.println("\t"+p);
            }
        }

“Mybatis中的一對(duì)多舉例分析”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

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

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

AI