分页查询数据重复的问题 (分页时数据库插入数据导致)

参考:

https://blog.csdn.net/desongzhang/article/details/124941189

参考之后 自己遇到的坑+解决办法

一、问题描述

分页时,同时在数据库中添加数据,导致第n页和第n+1页有部分数据重复(重复条数和查询分页时的添加的数据量有关)

二、解决办法

分页的过程中,插入了一条记录,导致再查询下一页的时候,查出来上一页的记录,那么,我思考,我可不可以不去查询他新增的这一条记录。那么这样,就查询不到别人新增的这条记录了。

那么需要的条件就出来了: 数据库表要有创建时间的这么一个字段|实际项目时,根据业务需求的所用的排序条件。如:order by create_time desc

那么解决思路就出来了,首先是要前端进行配合。那么其解决思路为:

1、分页接口中新增接收参数:排序条件的上一页最后一条记录的值。如:上一页最后一条记录的创建时间:lastRecordCreateTime

2、分页接口的实现方法中新增第一步中的条件。如:where create_time> lastRecordCreateTime

3、 网页端或客户端访问分页接口时,将排序条件的上一页最后一条记录的值传到分页接口中。第一页时,“排序条件的上一页最后一条记录的值”如:lastRecordCreateTime 可不传。后端使用该参数时,需要判断null.

坑1:完成上述工作后,分页不会出现相同数据,但第二页及其往后的数据查询出来 不是正常的分页数据,而是在 前端传的分页参数(where create_time> lastRecordCreateTime)条件下的第N页,所以,

n+1页时:需要后端设置当前页码为1

//分页时,参数有上一页的时间参数查询条件时,需要将页码设置为第一页
if (request.getPageIndex() > 1 && StringUtils.isNotEmpty(request.getCreateDate())){
            request.setPageIndex(1);
        }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值