JavaWeb手写分页方法

mac2025-08-05  3

如果jpa的分页方法太复杂,可以使用自己手写一个分页方法也很方便。

package com.screenshot.autotestplatform.utils; import java.util.Collection; import java.util.List; import java.util.Set; import java.util.stream.Collectors; public class PageUtil { /** * 根据总数计算总页数 * * @param totalCount 总共的数据数 * @param pageSize 每页展示的数据个数 * @return 一共有多少页 */ public static int getTotalPage(int totalCount, int pageSize) { return cn.hutool.core.util.PageUtil.totalPage(totalCount, pageSize); } /** * 该集合进行分页的总页数 * * @param collection 需要分页显示的集合 * @param pageSize 每页展示的数据个数 * @return 一共多少页 */ public static int getTotalPage(Collection collection, int pageSize) { return getTotalPage(collection.size(), pageSize); } public static <E> List<E> getPageData(List<E> list, int page, int pageSize) { int[] ints = transToStartEnd(list, page, pageSize); return list.stream().limit(ints[1]).skip(ints[0]).collect(Collectors.toList()); } public static <E> Set<E> getPageData(Set<E> set, int page, int pageSize) { int[] ints = transToStartEnd(set, page, pageSize); return set.stream().limit(ints[1]).skip(ints[0]).collect(Collectors.toSet()); } // private static int[] transToStartEnd(Collection collection, int page, int pageSize) { int size = collection.size(); //总共分页数 int totalPage = getTotalPage(collection, pageSize); if (page < 0) { page = 0; } if (page > totalPage) { page = totalPage; } int[] ints = cn.hutool.core.util.PageUtil.transToStartEnd(page, pageSize); int begin = ints[0]; int end = ints[1]; if (end > size) { end = size; } return new int[]{begin, end}; } }
最新回复(0)