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

 更新时间:2025年12月08日 08:56:52   作者:春卷-huachun  
文章讨论了在使用MyBatis进行多表数据关联查询时,由于主键ID重复导致数据被覆盖的问题,通过在实体类中添加伪列主键,并在查询中使用该伪列字段,可以确保每条数据都有一个唯一的标识,从而避免数据被去重

问题描述

当进行多表数据关联时候,使用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>

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java利用递归算法实现查询斐波那契数

    Java利用递归算法实现查询斐波那契数

    今天小编就为大家分享一篇关于Java利用递归算法实现查询斐波那契数,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Java 数据结构与算法系列精讲之汉诺塔

    Java 数据结构与算法系列精讲之汉诺塔

    汉诺塔是源于印度一个古老传说的益智玩具。大梵天创造世界时做了三根石柱,在一根柱子上从下往上按大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,三根柱子之间一次只能移动一个圆盘
    2022-02-02
  • Springboot集成定时器和多线程异步处理操作

    Springboot集成定时器和多线程异步处理操作

    这篇文章主要介绍了Springboot集成定时器和多线程异步处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Java基本语法笔记(菜鸟必看篇)

    Java基本语法笔记(菜鸟必看篇)

    下面小编就为大家带来一篇Java基本语法笔记(菜鸟必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • JAVA 继承基本类、抽象类、接口介绍

    JAVA 继承基本类、抽象类、接口介绍

    Java是一个面向对象的语言,java面向对象一般有三大特征:封装、继承、多态
    2013-01-01
  • Java异常基础知识解析

    Java异常基础知识解析

    这篇文章主要介绍了Java异常基础知识解析,具有一定借鉴价值,需要的朋友可以资参考下。
    2017-12-12
  • StateMachine 状态机机制深入解析

    StateMachine 状态机机制深入解析

    这篇文章主要介绍了,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Java实现WebSocket四个步骤

    Java实现WebSocket四个步骤

    这篇文章主要为大家介绍了Java实现WebSocket的方法实例,只需要简单四个步骤,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Java中的五种引用类型详解

    Java中的五种引用类型详解

    Java中的五种引用类型:强引用、软引用、弱引用、虚引用和Final引用,分别用于管理对象的生命周期,帮助垃圾回收器更高效地回收不再使用的对象
    2024-12-12
  • SpringBoot 动态配置Profile环境的方式

    SpringBoot 动态配置Profile环境的方式

    这篇文章主要介绍了SpringBoot 动态配置Profile环境的方式,本文通过图文实例相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-10-10

最新评论