首页 > 其他分享 >分页查询传入对象初始化

分页查询传入对象初始化

时间:2023-10-05 19:55:45浏览次数:35  
标签:初始化 pageIndex rows 分页 pageSize 查询 pageStart pageEnd page

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}

标签:初始化,pageIndex,rows,分页,pageSize,查询,pageStart,pageEnd,page
From: https://www.cnblogs.com/chy07/p/17743829.html

相关文章

  • Prometheus记录规则&查询结果持久化
    一、查询持久化在Prometheus的表达式浏览器进行的查询会生成新的时间序列,但其结果仅临时保存于PrometheusServer之上。在样本数据量较大、工作较为繁忙的PrometheusServer上,对于那些查询频率较高且运算较为复杂的查询而言,实时查询会存在一些响应延迟的情况。此时,记录规则和告警规......
  • MySQL数据库多表关联查询
    本文列举数据库的多表关联查询及实际使用,以员工表和部门表作为举例:部门表:dept点击查看创建部门表sqlcreate table `dept`  (  `deptno` int(2) not null,  `dname` varchar(14),  `loc` varchar(13),  primary key (`deptno`));员工表:emp点击查看创建......
  • MySQL学习(3)B+树索引是如何快速查询的
    前言我们已经知道在磁盘中,有很多索引页,这些页并非在物理结构上相连接,而是通过双向链表关联。如果要查找一条数据,需要通过页目录中的槽,通过二分法定位到分组再进行遍历查找。比如下面这样:SELECT[查询列表]FROM表名WHERE条件; 假设表中只有一个页,在查找记录时,可以根据搜......
  • access 使用Update更新记录时,提示"操作必须使用一个可更新的查询"
    原SQL:UPDATE刀具申购明细SET刀具申购明细.关闭=-1where刀具申购明细.申购数量<=(SELECTSum(Round(Nz([入库数量],0)*1,2))AS入库合计FROM采购入库tempLEFTJOIN刀具入库明细ON采购入库temp.申购ID=刀具入库明细.采购IDGROUPBY采购入库temp.申购ID)我本......
  • 实现点赞功能-实现查询点赞状态接口
           ......
  • C++ 初始化列表
    何谓初始化列表与其他函数不同,构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。在C++中,struct和class的唯一区别是默认的访问性不同,而这里我们不考虑访问性的问题,所以下面的代码都以struct来演示。structfoo......
  • MySQL聚合函数及分组查询
    本文列举数据库的聚合函数及分组查询的实际使用,以员工表和部门表作为举例:部门表:dept点击查看创建部门表sqlcreate table `dept`  (  `deptno` int(2) not null,  `dname` varchar(14),  `loc` varchar(13),  primary key (`deptno`));员工表:emp点击查......
  • Mybatis - 通过中间表查询表A和表B
    中间表中间表存储了表A的id和表B的id,除此之外还存储了自身需要的字段,如创建时间、id。xml很简单,通过多个子查询获取数据就可以了,将中间表的字段传递给子查询的column,子查询获取这个参数进行where条件查询。<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmappe......
  • 常用的SQL语句小结(二)---普通查询,注释,聚合,分组,复杂查询
    1.普通查询(1)查询所有列SELECT* FROMProduct;(2)查询部分列(跟(1)对比,相当于可以自己确定顺序)SELECTproduct_id,product_name,product_type,sale_price,purchase_price,regist_date FROMProduct;(3)查询时设置别名,英文和中文的区别英文案例:SELECTproduct_idASid,prod......
  • springboot整合elasticsearch中的分词查询配置
    前言:elasticsearch最好还是在linux中进行集群部署,这样更符合企业需求和规范,笔者只在windows的单节点9200端口上部署,仅用于测试和学习。 什么是分词查询: 指的是将输入的文本或查询语句切分成一个个独立的词语或词项,以便更好地处理和分析,然后进行查询,比如你在百度上搜索”成都......