package com.utils; /** * 分页信息工具类 * * 核心职责:封装前端传递的分页查询参数 * * 技术背景: * 1. 用于接收前端分页组件(如jQuery DataTables、Layui Table等)的查询参数 * 2. 与MyBatis Plus的Page对象配合使用,实现统一的分页处理 * 3. 提供标准化的分页参数传递格式 * * 使用场景: * - 控制器层接收前端分页参数 * - 服务层构建分页查询条件 * - 统一分页参数格式 */ public class JQPageInfo { /** * 当前页码 * 表示请求的页数,从1开始计数 */ private Integer page; /** * 每页记录数 * 表示每页显示的数据条数 */ private Integer limit; /** * 排序字段(Sort Index) * 用于指定按哪个字段进行排序 * 示例:"id", "create_time", "username" */ private String sidx; /** * 排序方式(Order) * 用于指定排序方向 * 取值:"asc"(升序), "desc"(降序) */ private String order; /** * 偏移量(Offset) * 表示从第几条记录开始查询 * 计算公式:offset = (page - 1) * limit */ private Integer offset; /** * 获取当前页码 * @return 当前页码,从1开始 */ public Integer getPage() { return page; } /** * 设置当前页码 * @param page 当前页码,从1开始 */ public void setPage(Integer page) { this.page = page; } /** * 获取每页记录数 * @return 每页显示的数据条数 */ public Integer getLimit() { return limit; } /** * 设置每页记录数 * @param limit 每页显示的数据条数 */ public void setLimit(Integer limit) { this.limit = limit; } /** * 获取排序字段 * @return 排序字段名称 */ public String getSidx() { return sidx; } /** * 设置排序字段 * @param sidx 排序字段名称 */ public void setSidx(String sidx) { this.sidx = sidx; } /** * 获取排序方式 * @return 排序方向:"asc"或"desc" */ public String getOrder() { return order; } /** * 设置排序方式 * @param order 排序方向:"asc"或"desc" */ public void setOrder(String order) { this.order = order; } /** * 获取偏移量 * @return 查询起始位置 */ public Integer getOffset() { return offset; } /** * 设置偏移量 * @param offset 查询起始位置 */ public void setOffset(Integer offset) { this.offset = offset; } // 可以添加的实用方法: /** * 计算偏移量(如果未设置) * 根据page和limit自动计算offset */ public void calculateOffset() { if (this.page != null && this.limit != null) { this.offset = (this.page - 1) * this.limit; } } /** * 验证分页参数有效性 * @return 参数是否有效 */ public boolean isValid() { return page != null && page > 0 && limit != null && limit > 0; } /** * 获取排序SQL片段 * @return 排序SQL语句,如:"id ASC" 或 "create_time DESC" */ public String getOrderByClause() { if (sidx != null && !sidx.trim().isEmpty() && order != null && !order.trim().isEmpty()) { return sidx + " " + order.toUpperCase(); } return null; } }