使用方式

前端需要提交参数当前页数currentPage,后台从数据库中查询出数据并将数据封装到PageInfo类中,把封装好的pageInfo对象传递给前端并解析。

      //根据查询结果返回list集合的数据List<Goods> data = userService.findAll();//创建一个PageInfo对象,传入泛型类PageInfo<Goods> pageInfo = new PageInfo<Goods>();/* 封装pageInfo数据 :第一个参数为list集合的数据第二个参数为当前页第三个参数为每页显示数据条数*/pageInfo.setPageInfo(data,currentPage,12);

前端代码

 <!-- 显示分页信息 --><div class="col-md-12" style="text-align: center;"><div class="col-md-6 col-sm-offset-3" id="page_nav_area"><nav aria-label="Page navigation "><ul class="pagination"><!-- 跳转的后台方法,当前页currentPage=1 --><li><a href="${Path}/UserController/mainUI?currentPage=1">首页</a></li><!-- 判断是否有上一页 --><c:if test="${pageInfo.hasPrePage}"><li><!-- 如果有上页,currentPage=上一页 --><a href="${Path}/UserController/mainUI?currentPage=${pageInfo.prePage}" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li></c:if><!-- 循环显示页码 --><c:forEach var="array" items="${pageInfo.pageArray}"><c:choose><!-- 如果等于当前页,则选中 --><c:when test="${pageInfo.currentPage == array}"><li class="active"><a href="#">${array}</a></li></c:when><c:otherwise><!-- 如果不等于当前页,则正常显示 --><li><a href="${Path}/UserController/mainUI?currentPage=${array}">${array}</a></li></c:otherwise></c:choose></c:forEach><!-- 判断是否有下一页 --><c:if test="${pageInfo.hasNextPage}"><li><!-- 如果有上页,currentPage=下一页 --><a href="${Path}/UserController/mainUI?currentPage=${pageInfo.nextPage}" aria-label="Next"><span aria-hidden="true">&raquo;</span></a></li></c:if><!-- 跳转尾页,当前页currentPage=最大页数 --><li><a href="${Path}/UserController/mainUI?currentPage=${pageInfo.pageCount}">尾页</a></li></ul><ul class="pagination"><!-- 显示总条数,总页数 --><li><span class="label label-info" style="font-size: 15px;">总${pageInfo.totalRecord}条,共${pageInfo.pageCount}页</span></li></ul></nav></div></div>

效果

PageInfo中的属性

 //当前页private int currentPage;//总页数private int pageCount;//总条数private int totalRecord;//页面大小private int pageSize;//是否有下一页private boolean hasNextPage;//是否有上一页private boolean hasPrePage;//当前页码数组private int[] pageArray;//当前页数据private List<T> list;//下一页private int nextPage;//上一页private int prePage;//是否是第一页private boolean isFirstPage;//是否是最后一页private boolean isLastPage;//开始行数private int startRow;//结束行数private int endRow;//需要显示多少页private int navigatePages;public PageInfo() {this.navigatePages = 5;      //默认显示5页this.hasPrePage = true;this.hasNextPage = true;this.isFirstPage = false;this.isLastPage = true;}

设置分页参数和数据

     //计算页码逻辑public void setPageInfo(List<T> list,int currentPage,int pageSize){this.currentPage = currentPage;this.pageSize = pageSize;this.totalRecord = list.size();this.pageCount = (int)Math.ceil((totalRecord*1.0) / pageSize);//判断是否有无前页或后页if (currentPage == 1){this.hasPrePage = false;this.prePage = -1;this.isFirstPage = true;}else {this.prePage = currentPage - 1;}if (currentPage == pageCount){this.hasNextPage = false;this.nextPage = -1;this.isLastPage = true;}else {this.nextPage = currentPage + 1;}this.pageArray = this.culArray(currentPage,pageSize,totalRecord,pageCount);this.startRow = (currentPage-1)*pageSize + 1;this.endRow = startRow+pageSize-1;if (endRow>totalRecord){endRow = totalRecord;}this.list = new ArrayList<>();for (int i=0;i<(endRow-startRow+1);i++){this.list.add(list.get(startRow-1+i));}}//计算显示的页数private int[] culArray(int currentPage,int pageSize,int totalRecord,int pageCount){int[] array;if (pageCount<=navigatePages){array = new int[pageCount];for (int i=0;i<pageCount;i++){array[i] = i + 1;}}else {array = new int[navigatePages];if (currentPage <= (navigatePages/2)){for (int i=0;i<navigatePages;i++){array[i] = i + 1;}}else {int x = pageCount-(navigatePages/2);if (currentPage>x){int start = pageCount - navigatePages + 1;for (int i=0;i<navigatePages;i++){array[i] = start + i;}}else {int start = currentPage - (navigatePages/2);for (int i=0;i<navigatePages;i++){array[i] = start + i;}}}}return array;}

完整代码

码云地址:分页工具类PageInfo

分页工具类——PageInfo相关推荐

  1. java ajax翻页_分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解

    [博客园cnblogs笔者m-yb原创, 转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708] htt ...

  2. java分页的工具类,java分页工具类

    PageBean-分页 package com.soyea.util; import java.io.Serializable; import java.util.List; /** * 分页工具类 ...

  3. java手动分页工具类

    开发中,碰到了一些奇葩的业务逻辑,无法使用框架自身的分页功能,想了很久最后还是决定自己手写一个分页工具类,以备后续参考和使用,下面直接上代码, /*** 手动分页类* @param datas* @p ...

  4. ssm整合oracle分页,java实现ssm分页工具类及其使用方法

    分享一下我现在所使用的分页工具类,不像网上的那么规范 纯属自己总结根据逻辑敲出来的,基于mysql的limit来做分页.有不对的地方还望大佬指出,直接上代码 PageTools package com ...

  5. Java Web的分页工具类

    最近写一个java web项目,以前分页的工具类,都是基础架构的人写好了的.也没有去细看,现在遇到这个状况. 就整理一下思路,自己写了一个分页的工具类.写的不好之处,还望斧正. 下面是我的代码: Pa ...

  6. PageUtils后端常用分页工具类

    工具类代码 package com.john.test.utils;import java.util.List;/*** @Author jiang* @Version 1.0* 分页工具类*/ pu ...

  7. 使用PageInfo分页工具类

    使用分页工具PageInfo得到分页结果 使用SpringBoot查表的时候,可能会返回多个结果,前端展示需要进行分页,所以需要后端返回分页的结果.本文只展示PageInfo的使用方法,不对源代码进行 ...

  8. Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)

    package cn.bdqn.mhouse.util;import java.util.ArrayList; import java.util.List;import cn.bdqn.mhouse. ...

  9. PageUtil 分页工具类

    maven 依赖 <dependency><groupId>com.github.pagehelper</groupId><artifactId>pag ...

最新文章

  1. Promise和Promise的方法
  2. 通用权限管理系统组件 中集成多个子系统的单点登录(网站入口方式)附源码
  3. ES权威指南[官方文档学习笔记]-8
  4. 时光机穿梭---删除文件
  5. hybris backoffice搜索时遇到could not execute full-text query的解决方案
  6. java 幽灵引用_Java 幽灵引用的作用
  7. 和平精英有电脑版吗_群雄逐鹿丨攀升电脑见证NEST和平精英王者诞生!
  8. java wsdl反向生成源码,并使用CXF实现客户端调用代码
  9. spring3的JAR包与注解学习笔记
  10. Ajxa验证用户和二级联动的实例(五)
  11. Unity3D内容加密保护
  12. KindEditor上传图片word
  13. ArcBlock 博客 | 区块链和数据库:致虚极,守静笃
  14. html、css实现导航栏5种常用效果
  15. 条形码生成软件如何批量生成ISBN条码
  16. Cura参数设置-避免支撑拆除带来的困难
  17. JDK 19 / Java 19 正式发布
  18. python乒乓球比赛规则_python模拟体育竞技分析--采用乒乓球规则
  19. 实现一个地铁线路站点
  20. 互联网广告学——程序化购买

热门文章

  1. h264 rtp FU-A
  2. JavaScript 通过正则测试页面是否出现连续的重复字符
  3. 增长黑客:如何绘制用户的旅程?
  4. Unity3D开发入门教程(四)——用Lua实现组件
  5. 关于迅飞的语音合成和识别
  6. 三年级计算机学打字备课,小学三年级信息技术认识键盘教案
  7. vb调用oracle 触发器,单片机VB编程实例_单片机控制的数字触发器
  8. Office2010Toolkit 免费下载,有效时间久!
  9. 手机射频测试分析与总结(一)——GPS部分
  10. 音画同行 像犹新生——三星2021 电视新品震撼再升级