【java 分页工具类】分页工具PageBean(149)

分页工具类:

java 复制代码
package com.itheima3;

import java.util.ArrayList;
import java.util.List;

public class PageBean<T> {
    private int pageSize; // 每页记录数
    private int pageNo; // 当前页
    private int totalPages; // 总页数
    private int totalRecords; // 总记录数
    private List<T> list;

    public int getPageSize() {
        return pageSize;
    }

    // 设置每页记录数
    public void setPageSize(int pageSize) {
        if (pageSize > 0) {
            this.pageSize = pageSize;
        } else {
            this.pageSize = 10;
        }
    }

    public int getPageNo() {
        return pageNo;
    }

    // 设置当前页
    public void setPageNo(int pageNo) {
        if (pageNo <= 1) {
            this.pageNo = 1;
        } else if (pageNo > this.totalPages) {
            this.pageNo = this.totalPages;
        } else {
            this.pageNo = pageNo;
        }
    }

    public int getTotalPages() {
        return totalPages;
    }

    // 设置总页数
    public void setTotalPages() {
        this.totalPages = this.totalRecords % this.pageSize == 0 ? this.totalRecords / this.pageSize
                : this.totalRecords / this.pageSize + 1;
    }

    public int getTotalRecords() {
        return totalRecords;
    }

    // 设置总记录数
    public void setTotalRecords(int totalRecords) {
        if (totalRecords >= 0) {
            this.totalRecords = totalRecords;
        } else {
            this.totalRecords = 0;
        }
    }

    public List<T> getList() {
        return list;
    }

    public void setList(List<T> list) {
        this.list = list;
    }

    // 当前页记录列表
    public void queryPager(int pageNo, int pageSize, List<T> list) {
        // 设置总记录数
        if (list != null && list.size() != 0) {
            this.setTotalRecords(list.size());
        } else {
            this.setTotalRecords(0);
        }
        // 设置每页记录数
        this.setPageSize(pageSize);
        // 设置总页数
        this.setTotalPages();
        // 设置当前页
        this.setPageNo(pageNo);
        // 设置当前页记录数
        if (list != null && list.size() != 0) {
            if (pageNo == this.totalPages) {
                this.list = list.subList((pageNo - 1) * pageSize, this.totalRecords);
            } else {
                this.list = list.subList((pageNo - 1) * pageSize, pageNo * pageSize);
            }
        } else {
            this.list = new ArrayList<>();
        }

    }

    public boolean isPrePage() {
        if (this.pageNo > 1) {
            return true;
        }
        return false;
    }

    public boolean isNextPage() {
        if (this.pageNo < this.totalPages) {
            return true;
        }
        return false;
    }

    public int getPrePageNo() {
        if (isPrePage()) {
            return this.pageNo - 1;
        }
        return this.pageNo;
    }

    public int getNextPageNo() {
        if (isNextPage()) {
            return this.pageNo + 1;
        }
        return this.pageNo;
    }
    
}

控制层:

java 复制代码
public PageBean queryList(@RequestParam(value = "page", defaultValue = "1") Integer page,
		@RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) {
	//	if(page == null){
	//		page = 1;
	//	}
	//	if(pageSize == null){
	//		pageSize = 10;
	//	}
		List<User> list = userService.queryList();  // 数据库查询返回的List;
		if (CollectionUtils.isNotEmpty(list)) {
			PageBean<User> bean = new PageBean<>();
			bean.queryPager(page, pageSize, list);
			return bean;
		}
		return null;
	}
	
相关推荐
yaoxin5211233 分钟前
397. Java 文件操作基础 - 创建常规文件与临时文件
java·开发语言·python
小短腿的代码世界7 分钟前
Qt日志系统深度解析:从qDebug到企业级日志框架
开发语言·qt
REDcker1 小时前
浏览器端Web程序性能分析与优化实战 DevTools指标与工程清单
开发语言·前端·javascript·vue·ecmascript·php·js
极客先躯2 小时前
高级java每日一道面试题-2025年11月24日-容器与虚拟化题[Dockerj]-runc 的作用是什么?
java·oci 的命令行工具·最小可用·无守护进程·完全标准·创建容器的核心流程·runc 核心职责思维导图
用户60648767188962 小时前
AI 抢不走的技能:用 Claude API 构建自动化工作流实战
java
我命由我123452 小时前
Kotlin 开发 - lateinit 关键字
android·java·开发语言·kotlin·android studio·android-studio·android runtime
aXin_ya2 小时前
微服务第八天 Sentinel 四种分布式事务模式
java·数据库·微服务
Halo_tjn2 小时前
Java Set集合相关知识点
java·开发语言·算法
Linsk3 小时前
Java和JavaScript的关系真是雷峰和雷峰塔的关系吗?
java·javascript·oracle
许彰午3 小时前
我手写了一个 Java 内存数据库(二):B+ 树的插入与分裂
java·开发语言·面试