这是一个实用的分页类 可能很多人都用过 mybatis-plus 自带的分页插件吧 这款插件的原理是拼接sql语句 在后面加limit offset 那么!这是查数据库后返回的结果的分页方式对吧! 那如果你的
可能很多人都用过mybatis-plus自带的分页插件吧
这款插件的原理是拼接sql语句 在后面加limit offset
那么!这是查数据库后返回的结果的分页方式对吧!
那如果你的结果不是从数据库查的 是调api查的hadoop的状态呢?
比如你的结果是一个List 每一条都是又臭又长 你的页面就那么大 你不可能一次加载所有内容给用户看
这时候 就需要写一个类来进行分页后返回给前端
分享一个我今天写的实用工具类
class PageResult 分页返回类
import lombok.Data;
@Data
public class PageResult {
private boolean success;
private String msg;
private Object content;
private PageVO pageVO;
public PageResult() {
}
public PageResult(boolean success, String msg, Object content, PageVO pageVO) {
this.success = success;
this.msg = msg;
this.content = content;
this.pageVO = pageVO;
}
public static PageResult success(Object content, PageVO pageVO) {
return new PageResult(true, "请求成功", content, pageVO);
}
}
class PageVO 记录分页信息的类
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class PageVO {
/***
* 当前页码
*/
private long cur=1;
/***
* 单页尺寸
*/
private long size =5;
/***
* 总记录数
*/
private long totalRecords;
/***
* 总页码
*/
private long totalPages;
}
重头戏
# 工具类 PageUtils
package com.starnet.yarnmonitor.utils;
import com.starnet.yarnmonitor.handler.ApiException;
import com.starnet.yarnmonitor.vo.result.PageVO;
import java.util.ArrayList;
import java.util.List;
public class PageUtils {
/**
* 将List转换成PageVo
*
* @param list 裁剪前的结果
* @param cur 请求的第几页 从1开始
* @param size 请求的当前页面尺寸
*/
public static PageVO getPageVoFromList(List list, Integer cur, Integer size) {
PageVO pageVO = new PageVO();
if (cur != null) {
pageVO.setCur(cur);
}
if (size != null) {
pageVO.setSize(size);
}
pageVO.setTotalRecords(list.size());
//总页码
int totalPages = (int) Math.ceil((double) list.size() / pageVO.getSize());
pageVO.setTotalPages(totalPages);
return pageVO;
}
public static List getPagedList(List list, Integer cur, Integer size) {
if (cur==null){
cur = 1;
}
if (size==null){
size = 5;
}
List resList = new ArrayList();
int start = (cur - 1) * size;
if (start>=list.size()){
throw new ApiException("请求页面超出限制,该页面无内容");
}
for (int i = start, j = size; j > 0 && i < list.size(); i++, j--) {
resList.add(list.get(i));
}
return resList;
}
}