项目中有时候遇到list多种来源,不能使用PageInfo在查询数据库时分页,需要查询全部之后,手动分页。

//list自定义排序ComparatorUser comparator=new ComparatorUser();
Collections.sort(list, comparator);//list分页开始int fromIndex = 0;
int toIndex = 0;
int total = list.size();  //取出总记录数
if(total/pageSize == 0 && total%pageSize > 0){fromIndex = 0;toIndex = total;
}else{if(total/pageSize >= 1 && total % pageSize >= 0){fromIndex = pageSize * (pageIndex-1);if(pageSize * pageIndex >= total){toIndex = total;}else{toIndex = pageSize * pageIndex;}}
}
list = list.subList(fromIndex, toIndex);
PageInfo<User> pageinfo = new PageInfo<User>(list);
pageinfo = PageHelperTool.initPageInfoObj(pageIndex,total,pageSize,pageinfo);
import java.util.Comparator;
/*** @author yang* @Title: ComparatorUser .java* @Package * @Description: 自定义排序* @date 2019年07月09日 10:01*/
public class ComparatorUser implements Comparator {public int compare(Object arg0, Object arg1) {User user1=(User)arg0;User user2=(User)arg1;//首先比较年龄,如果年龄相同,则比较名字int flag=user1.getAge().compareTo(user2.getAge());if(flag==0){return user1.getName().compareTo(user2.getName());}else{return flag;}}
}

//分页工具类

import com.github.pagehelper.PageInfo;/*** @author yang* @Title: PageHelperTool.java* @Package * @Description: 分页工具类* @date 2019年07月09日 10:01*/
public class PageHelperTool {/*** PageHelper中,如果当前页是最后一页,则返回的nextPage是0,即首页,而有时我们需要最后一页的nextPage是lastPage,因此写此方法* @param currentPage* @param pageObj* @return*/public static <T> PageInfo<T> lastPageSetNextPage(int currentPage, PageInfo<T> pageObj) {if (currentPage == pageObj.getPages()) {pageObj.setNextPage(pageObj.getPages());}return pageObj;}public static <T> PageInfo<T> initPageInfoObj(int currentPage, int total, int pageSize, PageInfo<T> pageInfo) {pageInfo.setNextPage(currentPage < ((total + pageSize - 1) / pageSize) ? currentPage + 1 : currentPage);pageInfo.setTotal(total);pageInfo.setPageNum(currentPage);pageInfo.setPages((total + pageSize - 1) / pageSize);pageInfo.setLastPage((total + pageSize - 1) / pageSize);pageInfo.setPrePage(currentPage > 1 ? currentPage - 1 : currentPage);pageInfo.setIsFirstPage(currentPage == 1 ? true : false);pageInfo.setIsLastPage(currentPage == (total + pageSize - 1) / pageSize ? true : false);pageInfo.setHasPreviousPage(currentPage == 1 ? false : true);pageInfo.setHasNextPage(currentPage == (total + pageSize - 1) / pageSize ? false : true);return calcNavigatepageNums(pageInfo);}private static <T> PageInfo<T> calcNavigatepageNums(PageInfo<T> pageInfo) {//当总页数小于或等于导航页码数时if (pageInfo.getPages() <= pageInfo.getNavigatePages()) {pageInfo.setNavigatepageNums(new int[pageInfo.getPages()]);for (int i = 0; i < pageInfo.getPages(); i++) {pageInfo.getNavigatepageNums()[i] = i + 1;}} else { //当总页数大于导航页码数时pageInfo.setNavigatepageNums(new int[pageInfo.getNavigatePages()]);int startNum = pageInfo.getPageNum() - pageInfo.getNavigatePages() / 2;int endNum = pageInfo.getPageNum() + pageInfo.getNavigatePages() / 2;if (startNum < 1) {startNum = 1;//(最前navigatePages页for (int i = 0; i < pageInfo.getNavigatePages(); i++) {pageInfo.getNavigatepageNums()[i] = startNum++;}} else if (endNum > pageInfo.getPages()) {endNum = pageInfo.getPages();//最后navigatePages页for (int i = pageInfo.getNavigatePages() - 1; i >= 0; i--) {pageInfo.getNavigatepageNums()[i] = endNum--;}} else {//所有中间页for (int i = 0; i < pageInfo.getNavigatePages(); i++) {pageInfo.getNavigatepageNums()[i] = startNum++;}}}return pageInfo;}
}

list实现PageInfo方式手动分页相关推荐

  1. 使用PageHelper分页插件手动分页,其他查询数据出现串连问题

    在一个需求中,需要在代码中进行分页,于是就选用了PageHelper分页插件进行分页,刚开始的时候忘记了PageHelper分页插件的用法于是我就用: // 设置分页查询条件 PageHelper.s ...

  2. lumen 分页_关于laravel 得手动分页问题

    laravel 手动分页,应用场景,需要在分页数据中传递特殊参数,laravel自带paginate方法不满足的情况下. 初始数据如下: $data = array( ['id'=>'1','u ...

  3. [Typora Markdown BP] 修改文字格式、图片缩放对齐居中、Excel表格互转、手动分页、表格不分页、Mermaid自定义绘图(以自动机为例)、思维导图导出、word导出删文字、自动编号

    目录 文章较长,请点击书签浏览感兴趣的内容. CSDN的渲染与Typora未必一致,下面所有功能都在Typora上测试成功. 文章目录 前言 全局设置 效果类 修改字体.颜色.字体大小.行高等 文字居 ...

  4. PageHelper分页失效问题(通过List流操作和手动分页来解决)

    项目场景: 在公司项目中,成绩查询的业务中有点逻辑在内,需要数据显示两层数据结构和数据筛选和处理,web端需要分页显示,前端展示组件是饿了么UI(Element UI),Java后端接口分页插件使用的 ...

  5. xhtmlrenderer 将html转换成pdf,完美css,带图片,手动分页,解决内容断开的问题

    xhtmlrenderer 将html转换成pdf,完美css,带图片,手动分页,解决内容断开的问题 参考文章: (1)xhtmlrenderer 将html转换成pdf,完美css,带图片,手动分页 ...

  6. java手动分页工具类

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

  7. JAVA对List进行手动分页

    在日常开发中,框架中使用的分页插件有时候不能够对组合List进行有效的分页,所以需要我们进行手动分页. 方法缺点:不适合大量数据使用,list越大,程序响应时间越久,会造成用户体验问题. 下面是优化出 ...

  8. vue 手动挂载组件 手动销毁组件_javascript原生手动分页组件

    上班第二天,好心烦,因为昨天情人节没情人吧~~~ 朋友圈都在虐狗,不刷了,老娘玩知乎去. 我不是天使:javascript原生自定义轮播图组件​zhuanlan.zhihu.com 我不是天使:jav ...

  9. ssm mysql动态分页_SSM项目手动分页详解

    环境:idea+mysql 首先,既然是mysql,那肯定会用到limit,用这个分页的确很方便. 第一步,编写sql语句 1 2 SELECT3 *4 FROM5 image6 7 8 status ...

最新文章

  1. 空间点像素索引(一)
  2. ISME:南农韦中等消减土壤青枯菌生物障碍新策略
  3. 判断出栈顺序的合法性(面试题)
  4. 缺陷分析与软件质量的关系
  5. Ubuntu18.04 安装MySQL、Navicat
  6. 按键精灵如何调用Excel及按键精灵写入Excel数据的方法教程---入门自动操作表格...
  7. 微信小程序页面栈_微信小程序使用页面栈改变上一页面的数据
  8. python中如何获取类的属性,python – 获取类的属性
  9. OpenGL ES着色器语言之变量和数据类型(二)(官方文档第四章)
  10. python怎么调用接口失败_python 调用接口
  11. APACHE局域网配置域名访问
  12. 不要找我了,我要去盘核桃了!
  13. 婚纱租赁APP开发功能模块解析
  14. MyEclipse 8.5 6.x 最新注册码(有效期至2016年)
  15. 浅谈solrCloud的分布式设计
  16. 算法详解之狄克斯特拉算法
  17. 树莓派开箱+上手python小游戏
  18. 计算机早期历史 Early computing
  19. dcom注册表问题修复
  20. I2C接口读取MPU9250磁力数值

热门文章

  1. 对迅雷5中几处网页脚本错误的处理
  2. 蓝牙 - Bluetooth SIG
  3. 第三方库下载教程(三种方法)
  4. vmware vcenter converter(物理机虚拟化)
  5. 曲线曲面造型系统Demo1
  6. 【如何带领好一个团队】
  7. Elasticsearch7.x搜索优化
  8. 区块链-什么是闪电网络?
  9. 电影购票APP快速搭建(平台开发)
  10. java俄罗斯方块设计报告,俄罗斯方块课程设计报告