当前位置:网站首页>对list集合进行分页,并将数据显示在页面中
对list集合进行分页,并将数据显示在页面中
2022-07-31 05:08:00 【小果子^_^】
工具类
工具类代码:
public class PageUtil {
/**
* 开始分页
* @param list
* @param pageNum 页码
* @param pageSize 每页多少条数据
* @return
*/
public static List startPage(List list, Integer pageNum,
Integer pageSize) {
if (list == null) {
return null;
}
if (list.size() == 0) {
return null;
}
Integer count = list.size(); // 记录总数
Integer pageCount = 0; // 页数
if (count % pageSize == 0) {
pageCount = count / pageSize;
} else {
pageCount = count / pageSize + 1;
}
int fromIndex = 0; // 开始索引
int toIndex = 0; // 结束索引
if (pageNum > pageCount){
return null;
}
if (pageNum != pageCount) {
System.out.println("pageNum====>"+pageNum);
fromIndex = (pageNum - 1) * pageSize;
System.out.println("fromindex===>"+fromIndex);
toIndex = fromIndex + pageSize;
} else {
System.out.println("from====>"+fromIndex);
fromIndex = (pageNum - 1) * pageSize;
toIndex = count;
}
List pageList = list.subList(fromIndex, toIndex);
return pageList;
}
}
在项目中的用法
从数据库中查出的数据集合:noGroup
List<Students> noGroup = studentsService.queryStudentNotInGroup(campusId, phone);
调用工具类的方法:
List<Students> page = PageUtil.startPage(noGroup,pageNum,pageSize);
总条数:
Integer count = noGroup.size();
总页码:
Integer totalPage = count % 10 == 0 ? count / 10 : count / 10 + 1;
map.put("totalPage", totalPage);
map.put("page", page);
已测试有效,希望可以帮到各位
**修改一下 :数据过多的话, if (pageNum != pageCount) 该行判断会报错,测试将!=修改为!equals---------> if (!pageNum.equals(pageCount)) **
修改:如果传入的页码大于总页码的话,会报错空指针异常,所以添加一个判断:
if (pageNum > pageCount){
return null;
}
注意:这种分页工具类只适用于少数据,对于上百万的数据,响应的时间就很长了,原因是对于集合先查出了所有的数据,然后再对所有的数据进行分页,如果上百万的数据的话,查询需要时间,所以响应很慢,更好的方法还在琢磨中,如您有更好的方法,麻烦提供一下
边栏推荐
- 快速掌握并发编程 --- 基础篇
- MySQL transaction isolation level, rounding
- wx.miniProgram.navigateTo在web-view中跳回小程序并传参
- Unity mobile game performance optimization series: performance tuning for the CPU side
- sql statement - how to query data in another table based on the data in one table
- MySQL_关于JSON数据的查询
- Unity Fighter
- MySQL-如何分库分表?一看就懂
- ES source code API call link source code analysis
- ERROR 2003 (HY000) Can't connect to MySQL server on 'localhost3306' (10061)
猜你喜欢
View source and switch mirrors in two ways: npm and nrm
Mysql应用安装后找不到my.ini文件
【一起学Rust】Rust的Hello Rust详细解析
MySQL忘记密码怎么办
CentOS7 —— yum安装mysql
centos7安装mysql5.7
EasyExcel的简单读取操作
MySQL database installation (detailed)
Redis进阶 - 缓存问题:一致性、穿击、穿透、雪崩、污染等.
Heavyweight | The Open Atomic School Source Line activity was officially launched
随机推荐
centos7安装mysql5.7步骤(图解版)
Multiple table query of sql statement
SQL injection of DVWA
Minio上传文件ssl证书不受信任
ERROR 2003 (HY000) Can't connect to MySQL server on 'localhost3306' (10061)
面试官问我TCP三次握手和四次挥手,我真的是
工作流编排引擎-Temporal
wx.miniProgram.navigateTo在web-view中跳回小程序并传参
【云原生】DevOps(五):集成Harbor
MySQL8.0.26安装配置教程(windows 64位)
如何将项目部署到服务器上(全套教程)
限流的原理
精解四大集合框架:List 核心知识总结
Unity框架设计系列:Unity 如何设计网络框架
Summary of MySQL common interview questions (recommended collection!!!)
Centos7 install mysql5.7
益智类游戏关卡设计:逆推法--巧解益智类游戏关卡设计
ERP Production Operation Control Kingdee
Mysql应用安装后找不到my.ini文件
MySQL优化:从十几秒优化到三百毫秒