拓展一个构造器方法,暂时不用
This commit is contained in:
parent
d14849903c
commit
e1221dd1f9
@ -0,0 +1,12 @@
|
||||
package com.stdproject.common;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class FilterCondition {
|
||||
|
||||
private String field;
|
||||
private String operator; // eq, ne, gt, ge, lt, le
|
||||
private Object value;
|
||||
|
||||
}
|
@ -0,0 +1,92 @@
|
||||
package com.stdproject.common;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @Date: 2025/6/5 9:21
|
||||
* @Description:
|
||||
*/
|
||||
public class QueryWrapperBuilder {
|
||||
|
||||
public static <T> QueryWrapper<T> buildQueryWrapper(PageRequest pageRequest) {
|
||||
QueryWrapper<T> queryWrapper = new QueryWrapper<>();
|
||||
|
||||
// 过滤条件
|
||||
if (pageRequest.getFilters() != null && !pageRequest.getFilters().isEmpty()) {
|
||||
for (FilterCondition condition : pageRequest.getFilters()) {
|
||||
String field = condition.getField();
|
||||
String op = condition.getOperator();
|
||||
Object val = condition.getValue();
|
||||
|
||||
if (!StringUtils.hasText(field) || ObjectUtil.isEmpty(val)) continue;
|
||||
switch (op.toLowerCase()) {
|
||||
case "eq":
|
||||
queryWrapper.eq(field, val);
|
||||
break;
|
||||
case "like":
|
||||
queryWrapper.like(field, val);
|
||||
break;
|
||||
case "left_like":
|
||||
queryWrapper.likeLeft(field, val);
|
||||
break;
|
||||
case "right_like":
|
||||
queryWrapper.likeRight(field, val);
|
||||
break;
|
||||
case "ne":
|
||||
queryWrapper.ne(field, val);
|
||||
break;
|
||||
case "gt":
|
||||
queryWrapper.gt(field, val);
|
||||
break;
|
||||
case "ge":
|
||||
queryWrapper.ge(field, val);
|
||||
break;
|
||||
case "lt":
|
||||
queryWrapper.lt(field, val);
|
||||
break;
|
||||
case "le":
|
||||
queryWrapper.le(field, val);
|
||||
break;
|
||||
case "in":
|
||||
if (val instanceof Collection) {
|
||||
queryWrapper.in(field, (Collection<?>) val);
|
||||
}
|
||||
break;
|
||||
case "notin":
|
||||
if (val instanceof Collection) {
|
||||
queryWrapper.notIn(field, (Collection<?>) val);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
// 忽略不支持的操作符
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 排序字段白名单校验
|
||||
// String orderBy = pageRequest.getOrderBy();
|
||||
// if (StringUtils.hasText(orderBy) && isAllowedOrderField(orderBy)) {
|
||||
// if ("asc".equalsIgnoreCase(pageRequest.getOrderDirection())) {
|
||||
// queryWrapper.orderByAsc(orderBy);
|
||||
// } else {
|
||||
// queryWrapper.orderByDesc(orderBy);
|
||||
// }
|
||||
// }
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
private static final Set<String> ALLOWED_ORDER_FIELDS = Set.of(
|
||||
"username", "nickname", "email", "phone", "lastmodifydate", "age"
|
||||
);
|
||||
|
||||
private static boolean isAllowedOrderField(String field) {
|
||||
return ALLOWED_ORDER_FIELDS.contains(field);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user