前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >手动分页代码解析

手动分页代码解析

作者头像
小码农薛尧
发布2025-02-26 14:23:12
发布2025-02-26 14:23:12
13800
代码可运行
举报
文章被收录于专栏:小码农薛尧小码农薛尧
运行总次数:0
代码可运行
注意:一般情况下请使用分页插件,特殊情况才能使用手动分页!!!!

在软件开发中,分页功能是非常常见的,它可以将大量数据按一定规则分割成多个页面展示,提高用户体验和系统性能。本文将详细解析一段实现手动分页功能的代码,并探讨其是否存在问题。 代码展示

代码语言:javascript
代码运行次数:0
复制

// 数据总条数 
int size = resps.size();
// 分割数据(手动分页)
List<QueryDeviceNameResp> queryDeviceNameResps = resps.subList((pageNo - 1) * pageSize > size? size : (pageNo - 1) * pageSize, pageNo * pageSize > size? size : pageNo * pageSize);
// 记录数据
page.setRecords(queryDeviceNameResps);
// 总条数
page.setTotal(size);
// 总页数
page.setPages(size / pageSize + 1);

代码解析

1. 获取数据总条数

代码语言:javascript
代码运行次数:0
复制

int size = resps.size();

这行代码通过resps.size()获取数据集合resps的总元素个数,即数据总条数。size变量后续用于计算分页相关的参数。

2. 分割数据实现手动分页

代码语言:javascript
代码运行次数:0
复制

List<QueryDeviceNameResp> queryDeviceNameResps = resps.subList((pageNo - 1) * pageSize > size? size : (pageNo - 1) * pageSize, pageNo * pageSize > size? size : pageNo * pageSize);

这里使用subList方法对数据进行分割。subList方法的两个参数分别是起始索引和结束索引(不包含结束索引)。(pageNo - 1) * pageSize计算出当前页码的起始索引,pageNo * pageSize计算出当前页码的结束索引。通过三元运算符判断索引是否超出数据总条数size,如果超出则取size,以避免索引越界。

3. 记录当前页数据

代码语言:javascript
代码运行次数:0
复制

page.setRecords(queryDeviceNameResps);

将分页后的数据queryDeviceNameResps设置到page对象的records属性中,用于后续展示当前页的数据。

4. 设置总条数和总页数

代码语言:javascript
代码运行次数:0
复制

page.setTotal(size);page.setPages(size / pageSize + 1);

将数据总条数size设置到page对象的total属性中。通过size / pageSize + 1计算总页数,这里加 1 是因为如果size不能被pageSize整除,需要额外一页来展示剩余数据。

代码潜在问题分析

  1. 内存占用问题: 这种手动分页是在内存中进行操作,如果数据量非常大,一次性将所有数据加载到内存中再进行分页,可能会导致内存溢出。特别是在服务器资源有限的情况下,这种方式对内存的压力较大。
  2. 参数校验不足:代码中没有对pageNo和pageSize进行有效的参数校验。如果pageNo传入负数或者pageSize传入 0 甚至负数,虽然在计算分页索引时通过三元运算符避免了部分异常,但可能会导致结果不符合预期,程序逻辑出现错误。
  3. 性能问题:当数据量巨大时,在内存中进行分页操作可能会比较耗时。相比数据库层面的分页(如使用 SQL 的LIMIT和OFFSET关键字),手动分页没有利用数据库的索引等优化机制,在大数据量下性能可能较差。

应用场景

这种手动分页的方式适用于对分页逻辑有精确控制的场景,例如在一些对性能要求较高、数据库分页性能不佳的情况下,可以在内存中进行手动分页。同时,在一些简单的小型项目中,手动分页代码实现简单,易于理解和维护,也可以作为分页的解决方案。

总结

通过对这段手动分页代码的详细解析以及问题分析,我们了解了手动分页的实现原理、关键步骤以及可能存在的不足。在实际开发中,需要根据项目的具体需求、数据量大小以及系统资源等因素,权衡是否使用手动分页方式,并注意对代码进行优化和完善,以提升系统性能和稳定性。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-02-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小码农薛尧 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 代码解析
  • 代码潜在问题分析
  • 应用场景
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档