Java 原生代码实现分页
分页的重点在于计算数据截取的起始位置和结束位置,不过通过Java 代码实现的分页,只是代码层次的分页,一般情况下分页都会通过数据库去实现,减少一次性查找的数据量。
使用 Java 原生代码实现分页:
- 起始位置计算:(pageNum - 1) * pageSize
- 结束位置计算: pageNum * pageSize > totalRecord ? totalRecord : pageNum * pageSize;
import java.util.Arrays;
import java.util.List;
import lombok.Data;
/**
* @date 2023/3/8 9:28
*/
@Data
public class PageBean<T> {
private int pageNum; // 当前页
private int pageSize; // 每页的大小
private int totalRecord; // 总数量
private int totalPage; // 总页数
private List<T> list; // 返回数据
private int fromIndex; // 起始位置
private int toIndex; // 结束位置
public PageBean(int pageNum, int pageSize, List<T> list) {
this.pageNum = pageNum; // 当前页,从1开始
this.pageSize = pageSize; // 每页的大小
this.totalRecord = list.size(); // 总数量
fromIndex = (pageNum - 1) * pageSize; // 计算起始位置
toIndex = pageNum * pageSize > totalRecord ? totalRecord : pageNum * pageSize; // 计算结束位置
if (totalRecord % pageSize == 0) { // 计算分页总数
this.totalPage = totalRecord / pageSize;
} else {
this.totalPage = totalRecord / pageSize + 1;
}
this.list = list.subList(fromIndex, toIndex); // 分页结果截取
}
public static void main(String[] args) {
int pageNum = 2;
int pageSize = 10;
List<String> results = Arrays.asList(
"A", "B", "C", "D", "E",
"F", "G", "H", "I", "J",
"K", "L", "M", "N", "O",
"P", "Q", "R", "S", "T",
"U", "V", "W", "X", "Y", "Z");
PageBean<String> pb = new PageBean<>(pageNum, pageSize, results);
List<String> list = pb.getList();
System.out.println("总数:" + pb.getTotalRecord() + " 总页数:" + pb.getTotalPage());
System.out.println("分页结果:" + list.toString());
}
}
执行的分页结果如下:
最后,在开发中使用的一般是封装好的分页工具,下边是 PageHelper 工具,具体使用请参考以下官方文档
至此,有关分页的介绍到此结束,后续如果有需要再进行补充。
版权声明:本文为swadian2008原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。