79 lines
1.5 KiB
Java
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);
|
|
}
|
|
}
|