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