Java为什么要分页删除,java – 如果用户操作可以删除其间的行,如何处理数据库分页?...

我陷入困境.我希望我能在这里找到解决方案.我正在使用分页来显示用户个人资料页面上的一些数据.

使用基本分页执行此操作:

public Page list(Query query, int pageNo, int perPage) {

int totalResults = query.list().size();

int firstResult = (pageNo - 1) * perPage;

query.setFirstResult(firstResult);

query.setMaxResults(perPage);

List resultList = query.list();

return new Page(resultList, perPage, pageNo, totalResults);

}

页面类构造函数:

public Page(List resultList, int pageSize, int page, int totalResults) {

this.resultList = resultList;

this.pageSize = pageSize;

this.page = page;

this.totalResults = totalResults;

this.totalPages = (totalResults - 1) / pageSize + 1;

}

现在,如果结果在哪里正常显示而没有任何删除,这将是正常的.但是用户可以从他的动作列表中删除项目.

让我们有这种情况.假设有totalResults – 17,perPage – 6和totalPages – 3.

现在在第一页中他删除了2个项目,总共有15个结果,而第2页面中的行ID已经转移到9而不是7(因为两个项目没有,总结果现在是15).

我希望情况很清楚.现在不需要这种中间换档.

我正在考虑将其作为remainingItems实现,但我再次对此感到困惑.剩余项目将始终取决于pageNo和perPage,并且与totalResult无关(因为总结果在两者之间减少).我也不能在这里使用最后n行,因为行计数将再次减少移动我想要的结果.

我也不想在方法中保留太多参数.例如 – 假设我在参数中传递toSatrtWith id并从中获取perPage行数,我可能得到所需的东西.但我想要一个更优雅的解决方案.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值