背景

用得非常多的一个分页实体对象

说明

只是一种抽象思路, 可能不一定能够直接使用, 慎用.
只是一种抽象思路, 可能不一定能够直接使用, 慎用.
只是一种抽象思路, 可能不一定能够直接使用, 慎用.

分页实体

@Data
public class PageEntity<T> {

    /**
     * 分页后的结果
     */
    private List<T> entityList;

    /**
     * 总计行数
     */
    private long totalSize;

    /**
     * 有参构造
     *
     * @param entityList 数据集合
     * @param totalSize 总数
     */
    public PageEntity(List<T&gt; entityList, long totalSize) {
        this.entityList = entityList;
        this.totalSize = totalSize;
    }

    /**
     * 带分页参数的PageEntity构造器
     *
     * @param entityList 待分页数据
     * @param offset 偏移量
     * @param rows 页大小
     */
    public PageEntity(List<T&gt; entityList, int offset, int rows) {
        offset = Math.max(offset, 0);
        rows = Math.min(rows, entityList.size());
        this.entityList = entityList.stream().skip(offset).limit(rows).collect(Collectors.toList());
        this.totalSize = entityList.size();
    }

    /**
     * 无参构造
     */
    public PageEntity() {
        this.entityList = new ArrayList<>();
        this.totalSize = 0;
    }

    /**
     * 基于内存的分页
     *
     * @param entityList 带分页的集合
     * @param pageSize 页容量
     * @param currnetPage 当前页
     * @return 分页后的实体对象
     * @param <T> 对象实体泛型
     */
    public static <T> PageEntity<T> page(List<T> entityList, int pageSize, int currnetPage) {
        if (pageSize < 1 || currnetPage < 1) {
            throw new IllegalArgumentException("currentPage or pageSize can`t less than 1");
        }

        // 分页
        int beginIndex = (currnetPage - 1) * pageSize;
        int totalSize = entityList.size();

        if (beginIndex < 0) {
            beginIndex = 0;
        } else if (beginIndex >= totalSize) {
            // 规避如下情况: 一开始有那么多数据, 在用户正在查看时候正好没有了, 那么这时跳转最后一页
            beginIndex = (totalSize - pageSize > 0 ? (totalSize - totalSize % pageSize) : 0);
        }

        int endIndex = Math.max(beginIndex + pageSize, totalSize);
        // 防止 endIndex 过大变为负数
        endIndex = Math.max(endIndex, 0);

        List<T> data = entityList.subList(beginIndex, endIndex);
        return new PageEntity<>(data, totalSize);
    }
}

原文地址:https://blog.csdn.net/xiaozhengN/article/details/134634271

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_34476.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注