pagehelper 分页实现真假分页
借鉴博客:https://www.jianshu.com/p/64657c9da39f
添加分页插件依赖:pagehelper
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.1</version> </dependency>
1、真分页:它在数据库里使用limit进行处理,算是在数据库中就分好页拿相应数据
@Override public IPage<TimeTemplateVo> page(PageTimeTemplateBo bo) { boolean isSysAdmin = isSystemAdmin(null); PageHelper.startPage(bo.getPageNum(), bo.getPageSize()); List<TimeTemplateVo> timeTemplateVos = timeTemplateMapper.findPage(bo,isSysAdmin,CurrentUserUtil.currentUserId()); PageInfo<TimeTemplateVo> pageInfo = new PageInfo<TimeTemplateVo>(timeTemplateVos); if (CollectionUtil.isEmpty(timeTemplateVos)) { return new Page<>(); } //转换分页类 Page<TimeTemplateVo> timeTemplateVoPage = new Page<>(); timeTemplateVoPage.setTotal(pageInfo.getTotal()); timeTemplateVoPage.setRecords(pageInfo.getList()); timeTemplateVoPage.setSize(pageInfo.getSize()); return timeTemplateVoPage; }
真分页比假分页效率高。
2、假分页:有时候会出现这样的情况:就是没办法在数据库中分好页拿数据,而是要先把所有数据查出来,然后再对list结果数据进行分页,
主要创建一个Page对象,然后给page设置相应的分页参数:pageIndex、pageSize
再根据页码参数pageIndex和每页显示数pageSize,用list.subList()计算拿到当前页数据的起始下标数据,把数据放入page对象中
最后把分好页的page对象放入PageInfo对象中返回
/** * @Description: 手动实现分页 * @param list 所有数据 * @param pageNum 分页页码 * @param pageSize 分页条数 **/ public <T> PageInfo<T> startPage(List<T> list, Integer pageNum, Integer pageSize) { //创建Page类 com.github.pagehelper.Page page = new com.github.pagehelper.Page(pageNum, pageSize); //为Page类中的total属性赋值 page.setTotal(list.size()); //计算当前需要显示的数据下标起始值 int startIndex = (pageNum - 1) * pageSize; int endIndex = Math.min(startIndex + pageSize, list.size()); //从链表中截取需要显示的子链表,并加入到Page page.addAll(list.subList(startIndex,endIndex)); //以Page创建PageInfo PageInfo pageInfo = new PageInfo<>(page); return pageInfo; } // 调用完 再进行封装 Page<DeviceOfflineStatisticsVo> deviceOfflineStatisticsVoPage = new Page<>(); deviceOfflineStatisticsVoPage.setTotal(pageInfo.getTotal()); deviceOfflineStatisticsVoPage.setRecords(pageInfo.getList()); deviceOfflineStatisticsVoPage.setSize(pageInfo.getSize()); return deviceOfflineStatisticsVoPage;
。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本