所有分类
  • 所有分类
  • 未分类

SpringBoot-将List转为Page(列表转分页)的工具类

简介

说明

本文介绍将List转为Page列表转分页的工具类。

使用场景

有时候,需要将List转为分页。比如:数据存放在Redis,前端需要分页展示。Redis不支持分页,所以只能先查出List再在内存里分页。

代码

工具类

package com.knife.router4j.server.common.util;

import com.knife.router4j.server.common.entity.PageBO;
import com.knife.router4j.server.common.entity.PageVO;

import java.util.List;

public class PageUtil {
    private static long startPageNo = 1;

    public static <T> PageVO<T> toPage(List<T> list, PageBO PageBO) {
        PageVO<T> PageVO = new PageVO<>();
        PageVO.setSize(PageBO.getPageSize());
        PageVO.setCurrent(PageBO.getPageNo());

        int allSize = 0;
        List<T> listResult = null;

        if (!CollectionUtils.isEmpty(list)) {
            int startIndex = (int) ((PageBO.getPageNo() - startPageNo)
                    * PageBO.getPageSize());
            allSize = list.size();
            int dataSize = allSize - startIndex;
            listResult = list.subList(startIndex, dataSize - startIndex);
        }

        PageVO.setTotal(allSize);
        PageVO.setDataList(listResult);

        return PageVO;
    }
}

分页请求

package com.knife.router4j.server.common.entity;

import lombok.Data;

@Data
public class PageRequest {
    /**
     * 每页的大小
     */
    private long pageSize;

    /**
     * 当前是第几页
     */
    private long pageNo;
}

分页响应

package com.knife.router4j.server.common.entity;

import lombok.Data;

import java.util.List;

@Data
public class PageResponse<T> {
    /**
     * 每页的大小
     */
    private long pageSize;

    /**
     * 当前是第几页
     */
    private long pageNo;

    /**
     * 总的数据个数
     */
    private long total;

    /**
     * 数据列表
     */
    private List<T> dataList;
}

用法

PageUtil.toPage(list, pageBO);
0

评论2

请先

  1. 博主,你这个分页 好像不对吧
    。。。。。。。 2023-09-06 1
    • 此代码不是通用代码,是特殊场景使用的,比如:从库里取出来是List,但需要以分页的形式给前端。
      自学精灵 2023-09-06 0
显示验证码
没有账号?注册  忘记密码?

社交账号快速登录