Files
timi-spring/src/main/java/com/imyeyu/spring/bean/Page.java
2026-03-16 15:42:25 +08:00

79 lines
1.5 KiB
Java

package com.imyeyu.spring.bean;
import com.imyeyu.java.TimiJava;
import com.imyeyu.java.bean.BasePage;
import com.imyeyu.spring.mapper.BaseMapper;
import com.imyeyu.utils.Text;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.util.LinkedHashMap;
/**
* 抽象页面查询参数
*
* @param <T> 查询示例类型
* @author 夜雨
* @version 2023-06-02 14:47
*/
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class Page<T> extends BasePage {
/** 精确匹配示例 */
protected T equalsExample;
/** 模糊匹配示例 */
protected T likesExample;
/** 精确匹配连接逻辑 */
protected Logic equalsLogic = Logic.AND;
/** 模糊匹配连接逻辑 */
protected Logic likesLogic = Logic.OR;
/** 排序字段映射 */
protected LinkedHashMap<String, BaseMapper.OrderType> orderMap;
/**
* 创建分页参数
*
* @param index 页码
* @param size 每页数量
*/
public Page(int index, int size) {
super(index, size);
}
/**
* 获取偏移量
*
* @return 偏移量
*/
public long getOffset() {
return (long) index * size;
}
/**
* 获取限制数量
*
* @return 限制数量
*/
public long getLimit() {
return size;
}
/**
* 添加排序字段
*
* @param field 字段名
* @param orderType 排序方式
*/
public void addOrder(String field, BaseMapper.OrderType orderType) {
orderMap = TimiJava.defaultIfNull(orderMap, new LinkedHashMap<>());
orderMap.put(Text.camelCase2underscore(field), orderType);
}
}