Mybatis-plus查询条件拒绝自动去重

问题描述:当进行多表数据关联时候,使用mybatis结果集封装数据,mybatis会将主键id作为map的key值,如果后面有重复的主键id,那么将会覆盖之前的数据,很显然这不是多表关联查询数据想要看到的结果,如此以来,最终结果会比实际结果少很多,因为数据被去重了。

以下是正常使用的数据结果集声明

<resultMap type="com.hhmt.delivery.pojo.model.vo.HhAdxAdSeatVo" id="JoinResultMap">                                    
        省略...
    </resultMap>

<resultMap id="HhAdxAdSeatRelationListResult" 
        省略...
    </resultMap>

正常的查询
 

<select id="selectHhAdxAdSeatRelationList" resultMap="HhAdxAdSeatRelationListResult">
        SELECT
        <include refid="Join_Column_List"/>,
        省略...
    </select>

此时查询出来的结果被去重了,本来分页查10条结果却只有4条数据

解决办法:使用伪列,让每一条数据都有一个唯一的id,这样在存入map时候就不会覆盖数据

1.实体类中添加伪列主键

@TableId
private Long rowNum;

2.查询中添加伪列字段

<!-- 结果集指定唯一id -->
<resultMap type="com.hhmt.delivery.pojo.model.vo.HhAdxAdSeatVo" id="JoinResultMap">
        <id property="rowNum" column="rowNum"/>
        省略...
    </resultMap>

<!-- 查询中给一个唯一伪列ID -->
<select id="selectHhAdxAdSeatRelationList" resultMap="HhAdxAdSeatRelationListResult">
        SELECT
        @rowNum:=@rowNum+1 as rowNum,
        <include refid="Join_Column_List"/>,
        <include refid="com.hhmt.delivery.dao.HhAdxMediaInfoMapper.Join_Column_List"/>,
        <include 
        省略...
    </select>

 这样,最终查询的数据将不会被去重

原文参考:MyBatis查询List返回数据只有少部分,因为结果去重了_mybatis查询的数据少最后一条_问啥啥不会的博客-CSDN博客

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值