You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

163 lines
3.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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;
}
}