分页查询传入对象初始化

public class LimitRequest<T> {

    private int pageStart = 0;  //开始 limit 第一个参数
    private int pageEnd = 0;    //结束 limit 第二个参数

    private int pageIndex;   //页数
    private int pageSize;   //行数

    private T data;

    public LimitRequest() {
    }

    /**
     * 该构造函数接受两个字符串参数 page 和 rows,用于表示页数和行数。
     * 如果 page 参数为空或为 null,则将页数 pageIndex 设置为 1,否则将其解析为整数并设置为 pageIndex。
     * 如果 rows 参数为空或为 null,则将行数 pageSize 设置为 10,否则将其解析为整数并设置为 pageSize。
     * 如果 pageIndex 为 0(通常不应该为0),则将其强制设置为 1,以确保页数不会小于 1。
     * 最后,根据 pageIndex 和 pageSize 计算 pageStart 和 pageEnd。
     * @param page
     * @param rows
     */
    public LimitRequest(String page, String rows) {
        this.pageIndex = StringUtils.isEmpty(page) ? 1 : Integer.parseInt(page);
        this.pageSize = StringUtils.isEmpty(page) ? 10 : Integer.parseInt(rows);
        if (0 == this.pageIndex) {
            this.pageIndex = 1;
        }
        this.pageStart = (this.pageIndex - 1) * this.pageSize;
        this.pageEnd = this.pageSize;
    }

    /**
     * 该构造函数接受两个整数参数 page 和 rows,用于表示页数和行数。
     * 如果 page 参数为 0,则将页数 pageIndex 设置为 1,否则将其设置为 page 的值。
     * 如果 rows 参数为 0,则将行数 pageSize 设置为 10,否则将其设置为 rows 的值。
     * 最后,根据 pageIndex 和 pageSize 计算 pageStart 和 pageEnd。
     * @param page
     * @param rows
     */
    public LimitRequest(int page, int rows) {
        this.pageIndex = 0 == page ? 1 : page;
        this.pageSize = 0 == rows ? 10 : rows;
        this.pageStart = (this.pageIndex - 1) * this.pageSize;
        this.pageEnd = this.pageSize;
    }

    /**
     * 该方法接受两个字符串参数 page 和 rows,用于更新页数和行数。
     * 它的逻辑与第一个构造函数类似,首先解析这两个参数,然后根据它们计算 pageIndex、pageSize、pageStart 和 pageEnd。
     * 该方法的主要作用是在需要更新分页参数时,可以调用它来更新对象的状态。
     * @param page
     * @param rows
     */
    public void setPage(String page, String rows) {
        this.pageIndex = StringUtils.isEmpty(page) ? 1 : Integer.parseInt(page);
        this.pageSize = StringUtils.isEmpty(page) ? 10 : Integer.parseInt(rows);
        if (0 == this.pageIndex) {
            this.pageIndex = 1;
        }
        this.pageStart = (this.pageIndex - 1) * this.pageSize;
        this.pageEnd = this.pageSize;
    }

    public int getPageStart() {
        return pageStart;
    }

    public void setPageStart(int pageStart) {
        this.pageStart = pageStart;
    }

    public int getPageEnd() {
        return pageEnd;
    }

    public void setPageEnd(int pageEnd) {
        this.pageEnd = pageEnd;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        if (data instanceof String) {
            String str = (String) data;
            if (StringUtils.isEmpty(str)){
                data = null;
            }
        }
        this.data = data;
    }

}

之后调用接口完成分页查询就可以了

sql代码大致为:

SELECT id, group_id, group_name 
FROM server
WHERE group_id = #{data} 
order by id desc 
limit #{pageStart},#{pageEnd}
posted @ 2023-10-05 19:46  寒人病酒  阅读(27)  评论(0)    收藏  举报