分页查询所需要使用到的泛型类

本文介绍了一个用于分页查询的通用工具类的设计与实现,该类支持泛型操作,能够方便地处理分页逻辑,包括计算当前页、每页显示条数、总页数等关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分页查询往往需要使用到查询工具类

package cn.edu.nwsuaf.GYL.query;

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



public class PageResult<T> {
    //这是一个分页查询相关的类,他需要具有泛型的功能 
    //功能
    //1:页面上显示分页
    //2:页面上显示数据


    // 主表的当前页码
    private int currentPage;
    // 子表的当前页码
    private int currentPage_zhib;

    //提供了set和get方法
    public int getCurrentPage_zhib() {
        return currentPage_zhib;
    }
    public void setCurrentPage_zhib(int currentPage_zhib) {
        this.currentPage_zhib = currentPage_zhib;
    }
    // 一页显示的条数
    private int pageSize;
    // 总条数,查询出来的
    private int totalRows;
    // 总页数:计算出来的
    private int totalPages;
    // 当前页的数据,当前页的数据是不确定的,因此需要使用到泛型
    private List<T> rows = new ArrayList<T>();

    public PageResult() {

    }

    //通过构造函数将需要的数据传入,当前页,页面的大小,以及总共的条数记录,这个总的条数记录是从数据库里边
    //查询出来的
    public PageResult(int currentPage, int pageSize, int totalRows) {
        this.currentPage = currentPage;
        this.pageSize = pageSize;
        this.totalRows = totalRows;

        // currentPage和pageSize最小值必须是1,在向上翻页的时候页面值会减小
        //并且当前页显示的数据也有,但是当前页的页面最小也只能是1,不能小于1
        this.currentPage = Math.max(this.currentPage, 1);
        this.pageSize = Math.max(this.pageSize, 1);

        // 总页数:计算出来,这是一个计算方法,有几种同的计算方法,
        //比如:一页显示5条,总共24条,那么(24+5-1)/5=5页,这实际就是在不能为整数
        //的时候就需要多加一页
        this.totalPages = (this.totalRows + this.pageSize - 1) / this.pageSize;

        // 错误处理
        // 当前页面不能大于总页数
        //再向下翻页的时候,当前页面的页数大小,不能大于总的页数
        //例如:只有五页,当你向第六页翻的时候,就还是第五页
        this.currentPage = Math.min(this.currentPage, this.totalPages);
    }

    public int getCurrentPage() {
        return currentPage;
    }

    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getTotalRows() {
        return totalRows;
    }

    public void setTotalRows(int totalRows) {
        this.totalRows = totalRows;
    }

    public int getTotalPages() {
        return totalPages;
    }

    public void setTotalPages(int totalPages) {
        this.totalPages = totalPages;
    }

    public List<T> getRows() {
        return rows;
    }

    public void setRows(List<T> rows) {
        this.rows = rows;
    }

    @Override
    public String toString() {
        return "PageResult [currentPage=" + currentPage + ", pageSize="
                + pageSize + ", totalRows=" + totalRows + ", totalPages="
                + totalPages + ", rows=" + rows.size() + "]";
    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值