mybatis中一对多使用collection标签导致分页信息错误解决

本文介绍如何在Spring MVC中通过 resultMap 的 select 属性解决分页查询时,collection 显示多余数据的问题,提供示例展示了如何使用自定义方法筛选一对一或多对多数据,确保返回正确数量的结果。
摘要由CSDN通过智能技术生成

如果需求中查询一对多,并且为分页查询,那么使用collection标签就会导致查出来的条数比实际多。这时候可以用collection中的select属性定义一个方法。例如:

<resultMap id="findByPageMap" type="com.hejia.asset.dto.AssetModelDTO">
        <id column="MODEL_ID" property="modelId" javaType="java.lang.Integer"/>
        <result column="WEIGHT" property="weight" javaType="java.lang.Integer"/>
        <-- ofType代表 多 的数据类型,column代表两个表的关联字段 -->
        <collection property="photoIds" ofType="java.lang.Integer" column="MODEL_ID"
                    select="com.hejia.asset.dao.AssetModelDao.findPhotoIdByModelId">
        </collection>
    </resultMap>
    <select id="findByPage" resultMap="findByPageMap">
        SELECT
        am.MODEL_ID,
        am.WEIGHT
        FROM
        t_asset_model am
    </select>

    <select id="findPhotoIdByModelId" resultType="java.lang.Integer">
        select PHOTO_ID as photoId from t_asset_model_photo where MODEL_ID=#{modelId}
    </select>

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值