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