- PageUtils工具类如下:
package utils;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author 类此够
* @Description 分页工具类,贼好用的分页工具类
*/
public class PageUtils implements Serializable {
public static void main(String[] args) {
// PageUtils p = new PageUtils();
// p.setPageIndex(1); // 当前页
// // p.setStart(0); // 起始条数
// p.setLimit(10); // 每页条数
// p.setParam("name", "xiaohei");
// /*
// * 只需要根据param查询总条数设置一下, 其他字段:例如共多少页,是否有下一页,是否有上一页,当前页多少条,字段自动会根据totalCount算出;
// */
// p.setTotalCount(20);
//
// p.clearParam();
// System.out.println(JSON.toJSONString(p));
}
private static final long serialVersionUID = 1L;
private int pageIndex; // 当前页
private int start; // 起始条数
private int limit; // 每页显示条数
private int totalCount; // 总条数
// 以下参数只能算, 不能有setXX方法---start
// 根据param参数查询出totalCount, 计算设置
private int totalPage; // 总页数
private int totalCountPageIndex; // 当前页有多少条
private boolean hasNextPage; // 是否有下一夜
private boolean hasLastPage; // 是否有上一夜
// 以下参数只能算, 不能有setXX方法---end
private String sortName; // 排序字段
private String sortOrder; // 排序方式:(ASC/DESC)
private Map<String, Object> queryParam = new HashMap<String, Object>();
private List<?> data;
public Map<String, Object> getParam() {
// 校验部分参数合理性
if ((this.start < 0) || (this.pageIndex <= 0) || (this.limit <= 0)) {
// 参数错误, (为最首页准备)
throw new RuntimeException("请检查入参 start / pageIndex / limit !");
}
// 如果既有start且start>0, 又有pageIndex, 则优先取start, 且不再做分页处理(已传start, 则本意就是指定查多少条)
if (this.start == 0) {
this.start = (this.pageIndex - 1) * this.limit;
} else {
queryParam.put("pageIndex", "-999"); // 已传start>0
}
queryParam.put("start", this.start);
queryParam.put("limit", this.limit);
queryParam.put("sortName", this.sortName);
queryParam.put("sortOrder", this.sortOrder);
return queryParam;
}
public int getTotalCount() {
return totalCount;
}
/**
* @author 类此够
* @param
* @return
* @description
* 设置总条数, 同时计算是否有上下页
*/
public void setTotalCount(int totalCount) {
if (totalCount == 0) {
return;
}
if ((totalCount > 0) && (this.start >= totalCount)) {
System.out.println("start: " + start + ", pageIndex: " + pageIndex + ", limit: " + limit + ", totalCount: " + totalCount);
throw new RuntimeException("请检查入参!");
}
this