分页工具类

public class PageUtil {
private PageUtil() {
// 工具类私有构造方法
}

/**
* 内存分页
*
* @param page
* @param pageSize
* @param filterDtoList
* @param <T>
* @return
*/
public static <T> PageResult<T> getPageResult(Integer page, Integer pageSize, List<T> filterDtoList) {
Integer total = filterDtoList.size();
int start = pageSize * (page - 1);
int end = start + pageSize;
if (start > total) {
return new PageResult<>();
}
if (end > total) {
end = total;
}
List<T> subList = filterDtoList.isEmpty() ? filterDtoList : filterDtoList.subList(start, end);

PageResult<T> pageResult = new PageResult<>(page, pageSize, total.longValue());
pageResult.setData(subList);
return pageResult;
}


/**
* 获取真实page,主要当页码超过真实页码后取最后一页
*
* @param totalNum
* @param currentPage
* @param pageSize
* @return
*/
public static int getRealPage(long totalNum, int currentPage, int pageSize) {
if (totalNum < 1) {
return 1;
}
int totalPage = (int) (totalNum + (long) pageSize - 1L) / pageSize;
if (currentPage <= totalPage) {
return currentPage;
}
return totalPage;
}
}
posted @   剑阁丶神灯  阅读(179)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示