后台有个接口是根据create_time字段排序查询列表。
结果发现翻页到第二页,出现了一条和第一页某条数据一模一样的数据。

怀疑可能是order by create_time导致排序不稳定。所以决定多加一个根据id排序

增加根据id排序后,解决了该问题。

orderBy 排序的createTime字段不唯一,会出现数据排序不稳定,以至于limit分页时出现数据重复。
需要加上唯一列,如:id,保证orderBy的排序的唯一性,可以解决limit分页时出现数据重复的问题。

orderBy 排序的createTime字段不唯一,会出现数据排序不稳定,以至于limit分页时出现数据重复。需要加上唯一列,如:id,保证orderBy的排序的唯一性,可以解决limit分页时出现数据重复的问题。
Mybaitsplus 条件查询+ 排序 + 分页 //创建QueryWrapper QueryWrapper<User> queryWrapper = new QueryWrapper<User>(); //条件查询 queryWrapper.eq("apply_id", applyId); queryWrapper.eq("del_status", 0); //构建 分页 对象 【第一个参数是当前页数,第二个参数的每页条数】
之前写了一个 分页 查询用 mybatis plus的 分页 查询,根据按照时间倒序 排序 。前端说有 重复 数据 orderBy 排序 的字段不唯一,会出现 数据 排序 不稳定,以至于limit 分页 时出现 数据 重复 。 需要加上唯一列,如:id,保证orderBy的 排序 的唯一性,可以解决limit 分页 时出现 数据 重复 的问题。...
1. 问题描述 bug发生在一个即将下班的周五,产品经理发来了钉钉消息,一个线上跑了很久的系统,用户列表上下翻页的时候有两条一模一样的 数据 。当时我的第一反应是不可能啊,这系统都跑多久了,最近也没人改代码,怎么会有问题呢。不过产品经理说有bug,咱也不能忽视对吧,有bug那就看看呗,争取周五早点下班。 2. 问题重现及解决(模拟的线上环境) 2.1 环境 mysql 8.0 、pageHelper 分页 插件 2.2 问题现象 两次结果出现同一条 id 为 53的 数据 截图如下: 2.3 问题分析 查看sql
@Bean public PaginationInterceptor paginationInterceptor() { // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false // paginationInterceptor.setOverflow(false);
正常使用PageHelper来 分页 时可以的,但是如果在查询list后做了非常多的处理,即解包在装包操作。可能最后返回时 分页 数据 查询的对,但是 分页 信息就有问题了。有的甚至 分页 功能都不行。这里为避免几个坑,有些规则遵守还是有必要的。 1.首先将下面这句代码放在第一行。 PageHelper.startPage(pageNum, pageSize); 2.查询出list后,通过下面语句获取总条数。这个不是这一页的总条数,而是不 分页 情况下查询的总条数。 PageInfo<实体类> page
WITH selectTemp AS ( SELECT TOP 100 PERCENT ROW_NUMBER ( ) OVER ( ORDER BY 排序 字段) AS __row_number__, WHERE 1 = 1 ORDER ... 原因分析: 原因是一对多经过 mybatis 结果映射之后就会整理 重复 数据 ,因为我们 分页 是按主表的 数据 来分的,这里查出来的20条 数据 也有从表的 数据 ,所以他本来就是不够20条的。 解决方案: 既然如此,那我就用group by 让你按主表记录数显示,然后再用 mybatis “n+1”的查询方式,再给你填充 数据 ,这样就完美的解决了这个问题。 <!-- 通用查询映射结果 --& 其实两者联合使用非常简单,只需要在使用 分页 插件的基础上使用其提供的orderByDesc/orderByAsc就能完美融合。写这篇博客只是给一些初学者一个方便的整理而已。下面会先给出完整的使用情况,在到后面分别解释两者的用法。以方便只关心这个用法或者赶时间的朋友。处于保密性考虑,我将大部分字段进行了删减,将项目名也进行了修改 Controller @Slf4j @Validated @Res... 1 mybatis-plus select查询语句默认是查全部字段,有两种方法可以指定要查询的字段 2 Mybatis plus实现Distinct去重功能 3 Mybatis plus实现in操作 4 mybatis 转义对照表 2. 解决思路 既然是在我 分页 的过程中,插入了一条记录,导致我再查询下一页的时候,查出来上一页的记录,那么,我思考,我可不可以不去查询他新增的这一条记录。那么这样,就查询不到别人新增的这条记录了。 那么需要的条件就出来了: 数据 库表要有创建时间的这么一个字段 那么解决思路就出来了,首先是要前端进行配合。那么其解决思路为: 网页端(前端 分页 要使用异步加载): 在页面初始化的时候