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 查询示例类型 * @author 夜雨 * @version 2023-06-02 14:47 */ @Data @NoArgsConstructor @EqualsAndHashCode(callSuper = true) public class Page extends BasePage { /** 精确匹配示例 */ protected T equalsExample; /** 模糊匹配示例 */ protected T likesExample; /** 精确匹配连接逻辑 */ protected Logic equalsLogic = Logic.AND; /** 模糊匹配连接逻辑 */ protected Logic likesLogic = Logic.OR; /** 排序字段映射 */ protected LinkedHashMap 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); } }