简介

说明

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

使用场景

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

代码

工具类

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

import com.knife.router4j.server.common.entity.PageRequest;
import com.knife.router4j.server.common.entity.PageResponse;

import java.util.List;

public class PageUtil {
public static <T> PageResponse<T> toPage(List<T> list, PageRequest pageRequest){
int startIndex = (int) (pageRequest.getCurrent() * pageRequest.getSize());
int allSize = list.size();
int dataSize = allSize - startIndex;
List<T> listResult = list.subList(startIndex, dataSize - startIndex);

PageResponse<T> pageResponse = new PageResponse<>();
pageResponse.setSize(pageRequest.getSize());
pageResponse.setCurrent(pageRequest.getCurrent());
pageResponse.setTotal(allSize);
pageResponse.setDataList(listResult);

return pageResponse;
}
}

分页请求

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

import lombok.Data;

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

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

分页响应

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

import lombok.Data;

import java.util.List;

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

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

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

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

用法

PageUtil.toPage(list, pageRequest);