ibatis的一对多查询

在Mybatis中,遇到需要一对多和多对多查询的对象封装,可以使用<collection>标签加载

而在Mybatis的前身ibatis中,不支持该标签,要进行类似的封装可以使用resultMap属性加载


在MyBatis中如下的配置

    <!-- Result Map -->
    <!-- goods resultmap -->
    <resultMap id="goodsResultMap" type="com.qunar.scoresystem.bean.Goods">
        <id property="goodsId" column="goods_id" />
        <result property="goodsName" column="goods_name" />
        <result property="goodsStorageNum" column="goods_storage_num" />
        <result property="goodsScore" column="goods_score" />
        <result property="goodsDescription" column="goods_description" />
        <result property="goodsStatus" column="goods_status" />
        <collection property="goodsImgList" resultMap="goodsImgResult" />
    </resultMap>

    <!-- goodsimage resultmap -->
    <resultMap id="goodsImgResult" type="com.qunar.scoresystem.bean.GoodsImg">
        <id property="imgId" column="img_id" />
        <result property="goodsId" column="goods_id" />
        <result property="imgDir" column="img_dir" />
        <result property="imgSize" column="img_size" />
        <result property="imgName" column="img_name" />
    </resultMap>


ibatis不支持<collection>标签,可以用下列的方法,效果一致

用groupBy属性代替<id>标签

直接在result中使用resultMap属性引用其他resultMap,ibatis会自动封装

    <!-- Result Map -->
    <!-- goods resultmap -->
    <resultMap id="goodsResultMap" type="com.qunar.scoresystem.bean.Goods" groupBy="goodsId">
        <result property="goodsId" column="goods_id" />
        <result property="goodsName" column="goods_name" />
        <result property="goodsStorageNum" column="goods_storage_num" />
        <result property="goodsScore" column="goods_score" />
        <result property="goodsDescription" column="goods_description" />
        <result property="goodsStatus" column="goods_status" />
        <result property="goodsImgList" resultMap="goodsImgResult" />
    </resultMap>

    <!-- goodsimage resultmap -->
    <resultMap id="goodsImgResult" type="com.qunar.scoresystem.bean.GoodsImg">
        <result property="imgId" column="img_id" />
        <result property="goodsId" column="goods_id" />
        <result property="imgDir" column="img_dir" />
        <result property="imgSize" column="img_size" />
        <result property="imgName" column="img_name" />
    </resultMap>



还有一种方法可以实现,但效率太低,不推荐使用

    <!-- Result Map -->
    <!-- goods resultmap -->
    <resultMap id="goodsResultMap" type="com.qunar.scoresystem.bean.Goods">
        <result property="goodsId" column="goods_id" />
        <result property="goodsName" column="goods_name" />
        <result property="goodsStorageNum" column="goods_storage_num" />
        <result property="goodsScore" column="goods_score" />
        <result property="goodsDescription" column="goods_description" />
        <result property="goodsStatus" column="goods_status" />
        <result property="goodsImgList" column="{goodsId = goods_id}" select="SelectGoodsImgList" />
    </resultMap>

    <!-- goodsimage select -->
    <select id="SelectGoodsImgList" resultClass="com.qunar.scoresystem.bean.GoodsImg">
        select * from XXX where id = #goodsId#
    </select>


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值