list实现PageInfo方式手动分页
项目中有时候遇到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方式手动分页相关推荐
- 使用PageHelper分页插件手动分页,其他查询数据出现串连问题
在一个需求中,需要在代码中进行分页,于是就选用了PageHelper分页插件进行分页,刚开始的时候忘记了PageHelper分页插件的用法于是我就用: // 设置分页查询条件 PageHelper.s ...
- lumen 分页_关于laravel 得手动分页问题
laravel 手动分页,应用场景,需要在分页数据中传递特殊参数,laravel自带paginate方法不满足的情况下. 初始数据如下: $data = array( ['id'=>'1','u ...
- [Typora Markdown BP] 修改文字格式、图片缩放对齐居中、Excel表格互转、手动分页、表格不分页、Mermaid自定义绘图(以自动机为例)、思维导图导出、word导出删文字、自动编号
目录 文章较长,请点击书签浏览感兴趣的内容. CSDN的渲染与Typora未必一致,下面所有功能都在Typora上测试成功. 文章目录 前言 全局设置 效果类 修改字体.颜色.字体大小.行高等 文字居 ...
- PageHelper分页失效问题(通过List流操作和手动分页来解决)
项目场景: 在公司项目中,成绩查询的业务中有点逻辑在内,需要数据显示两层数据结构和数据筛选和处理,web端需要分页显示,前端展示组件是饿了么UI(Element UI),Java后端接口分页插件使用的 ...
- xhtmlrenderer 将html转换成pdf,完美css,带图片,手动分页,解决内容断开的问题
xhtmlrenderer 将html转换成pdf,完美css,带图片,手动分页,解决内容断开的问题 参考文章: (1)xhtmlrenderer 将html转换成pdf,完美css,带图片,手动分页 ...
- java手动分页工具类
开发中,碰到了一些奇葩的业务逻辑,无法使用框架自身的分页功能,想了很久最后还是决定自己手写一个分页工具类,以备后续参考和使用,下面直接上代码, /*** 手动分页类* @param datas* @p ...
- JAVA对List进行手动分页
在日常开发中,框架中使用的分页插件有时候不能够对组合List进行有效的分页,所以需要我们进行手动分页. 方法缺点:不适合大量数据使用,list越大,程序响应时间越久,会造成用户体验问题. 下面是优化出 ...
- vue 手动挂载组件 手动销毁组件_javascript原生手动分页组件
上班第二天,好心烦,因为昨天情人节没情人吧~~~ 朋友圈都在虐狗,不刷了,老娘玩知乎去. 我不是天使:javascript原生自定义轮播图组件zhuanlan.zhihu.com 我不是天使:jav ...
- ssm mysql动态分页_SSM项目手动分页详解
环境:idea+mysql 首先,既然是mysql,那肯定会用到limit,用这个分页的确很方便. 第一步,编写sql语句 1 2 SELECT3 *4 FROM5 image6 7 8 status ...
最新文章
- 空间点像素索引(一)
- ISME:南农韦中等消减土壤青枯菌生物障碍新策略
- 判断出栈顺序的合法性(面试题)
- 缺陷分析与软件质量的关系
- Ubuntu18.04 安装MySQL、Navicat
- 按键精灵如何调用Excel及按键精灵写入Excel数据的方法教程---入门自动操作表格...
- 微信小程序页面栈_微信小程序使用页面栈改变上一页面的数据
- python中如何获取类的属性,python – 获取类的属性
- OpenGL ES着色器语言之变量和数据类型(二)(官方文档第四章)
- python怎么调用接口失败_python 调用接口
- APACHE局域网配置域名访问
- 不要找我了,我要去盘核桃了!
- 婚纱租赁APP开发功能模块解析
- MyEclipse 8.5 6.x 最新注册码(有效期至2016年)
- 浅谈solrCloud的分布式设计
- 算法详解之狄克斯特拉算法
- 树莓派开箱+上手python小游戏
- 计算机早期历史 Early computing
- dcom注册表问题修复
- I2C接口读取MPU9250磁力数值