当前位置 : 主页 > 编程语言 > 其它开发 >

我写了一个分页工具类

来源:互联网 收集:自由互联 发布时间:2022-05-30
这是一个实用的分页类 可能很多人都用过 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;

    }
}

网友评论