简介
说明
本文介绍将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);
请先
!