以前自己写的分页都比较蠢,然后试着将分页的代码进行封装,于是昨天就写了个小例子。
工具类Page.java
相比以前主要是多写了一个相对于上下页的判断,比较方便。
package com.hy.loong.pojo;
import java.util.ArrayList;
import java.util.List;
public class Page<T> {
private Integer pageIndex = 1; // 需要显示的页码
private Integer totalPages = 1; // 总页数
private Integer pageSize = 5; // 每页记录数
private Integer totalRecords = 0; // 总记录数
private boolean isHavePrePage = false; // 是否有上一页
private boolean isHaveNextPage = false; // 是否有下一页
private List<T> pageDatas = new ArrayList<T>();
public Integer getPageIndex() {
return pageIndex;
}
public void setPageIndex(Integer pageIndex) {
this.pageIndex = pageIndex;
}
public Integer getPageSize() {
return pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public Integer getTotalRecords() {
return totalRecords;
}
public void setTotalRecords(Integer totalRecords) {
if (totalRecords < 0) {
throw new RuntimeException("总记录数不能小于0!");
}
// 设置总记录数
this.totalRecords = totalRecords;
// 计算总页数
this.totalPages = this.totalRecords / this.pageSize;
if (this.totalRecords % this.pageSize != 0) {
this.totalPages++;
}
// 计算是否有上一页
if (this.pageIndex > 1) {
this.isHavePrePage = true;
} else {
this.isHavePrePage = false;
}
// 计算是否有下一页
if (this.pageIndex < this.totalPages) {
this.isHaveNextPage = true;
} else {
this.isHaveNextPage = false;
}
}
public List<T> getPageDatas() {
return pageDatas;
}
public void setPageDatas(List<T> pageDatas) {
this.pageDatas = pageDatas;
}
public Integer getTotalPages() {
return totalPages;
}
public boolean getIsHavePrePage() {
return isHavePrePage;
}
public boolean getIsHaveNextPage() {
return isHaveNextPage;
}
}
调用方式如下:
/**
* 查询学科数据
* @param nowPage 当前页
* @param pageSize 显示数量
* @return
*/
public Page<Math> getMathPage(String nowPage,String pageSize);
参数封装方式如下:
public Page<Math> getMathPage(String nowPage, String pageSize) {
//获取总条数
Integer totalRecords = mathDao.findAllNum();
//获取当前页
Integer pageNo = Integer.parseInt(nowPage); //页码
Integer pageSizeInt =Integer.parseInt(pageSize);//数量
//获取当前数据
List<Math> maths =mathDao.getMathPage((pageNo-1)*pageSizeInt,pageSizeInt);
//封装数据返回
Page<Math> page = new Page<Math>();
page.setPageIndex(pageNo);
page.setPageSize(pageSizeInt);
page.setPageDatas(maths);
page.setTotalRecords(totalRecords);
return page;
}
希望对刚刚接触分页的小伙伴有点帮助。