简介
说明
本文介绍将List转为Page列表转分页的工具类。
使用场景
有时候,需要将List转为分页。比如:数据存放在Redis,前端需要分页展示。Redis不支持分页,所以只能先查出List再在内存里分页。
代码
工具类
package com.suchtool.nicecommon.core.util;
import com.suchtool.nicecommon.core.model.PageBO;
import com.suchtool.nicecommon.core.model.PageVO;
import java.util.List;
public class PageUtil {
public static <T> PageVO<T> toPage(List<T> list, PageBO pageBO, Long startPageIndex) {
Long tmpStartPageIndex = startPageIndex != null
? startPageIndex
: 1;
PageVO<T> PageVO = new PageVO<>();
PageVO.setPageSize(pageBO.getPageSize());
PageVO.setCurrentPageIndex(pageBO.getCurrentPageIndex());
long allSize = 0;
List<T> listResult = null;
if (!CollectionUtils.isEmpty(list)) {
int startIndex = (int) ((pageBO.getCurrentPageIndex() - tmpStartPageIndex)
* pageBO.getPageSize());
allSize = list.size();
long dataSize = allSize - startIndex;
listResult = list.subList(startIndex, (int)(dataSize - startIndex));
}
PageVO.setTotalSize(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);

请先 !