级联查询:resultMap完成sql查询结果对java对象的映射

在这里插入图片描述
上图是产品属性分类,应该关联的是属性参数表,前端需要的是,产品属性分类的id,name,以及属性参数表的id,name。
在这里插入图片描述
定义了一个数据传输对象DTO,有产品属性分类的id,name,属性参数则定义了一个list。

在mapper.xml文件中:

<resultMap id="ListWithAttrMap" type="com.tulingxueyuan.mall.modules.pms.model.dto.ProductAttributeCateDTO">
        <id column="id" property="id"/>
        <result column="name" property="name"/>
        <collection property="productAttributeList"  resultMap="com.tulingxueyuan.mall.modules.pms.mapper.PmsProductAttributeMapper.BaseResultMap"></collection>
    </resultMap>
    
    <select id="getListWithAttr"
            resultMap="ListWithAttrMap">
        SELECT
        pac.id,
        pac.`name`,
        ppa.id attr_id,
        ppa.`name` attr_name
        FROM
        `pms_product_attribute_category` pac
        LEFT JOIN `pms_product_attribute` ppa ON pac.id = ppa.product_attribute_category_id
        AND ppa.type = 1
    </select>

sql完成的结果映射的resultMap是ListWithAttrMap,完成了属性分类的id和name的映射,然后用collection 完成dto对象中的productAttributeList的映射,但是属性参数查询返回结果是attr_id和attr_name,无法映射到属性参数表的id和name,视频采用了<collection property="productAttributeList" columnPrefix="attr_" resultMap="com.tulingxueyuan.mall.modules.pms.mapper.PmsProductAttributeMapper.BaseResultMap"></collection>
通过去掉attr_的前缀来完成映射,我采用了自己新定义一个resultMap来完成映射

<resultMap id="ListWithAttrMap" type="com.tulingxueyuan.mall.modules.pms.model.dto.ProductAttributeCateDTO">
        <id column="id" property="id"/>
        <result column="name" property="name"/>
        <collection property="productAttributeList" resultMap="newMap"></collection>
    </resultMap>

    <resultMap id="newMap" type="com.tulingxueyuan.mall.modules.pms.model.PmsProductAttribute">
        <id column="attr_id" property="id"/>
        <result column="attr_name" property="name"></result>
    </resultMap>

如图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值