From ea1ff005e47bc4018d38bca8111c893383cd0312 Mon Sep 17 00:00:00 2001 From: lilong Date: Tue, 26 Mar 2024 16:49:41 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=A7=A3=E5=86=B3=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6string=E6=9C=89=E4=BC=A0""=E7=9A=84=E6=83=85?= =?UTF-8?q?=E5=86=B5=EF=BC=8C=E8=BF=99=E7=A7=8D=E6=83=85=E5=86=B5=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E5=BF=BD=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/axzo/pokonyan/dao/wrapper/CriteriaField.java | 6 ++++++ .../java/cn/axzo/pokonyan/dao/wrapper/CriteriaWrapper.java | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/src/main/java/cn/axzo/pokonyan/dao/wrapper/CriteriaField.java b/src/main/java/cn/axzo/pokonyan/dao/wrapper/CriteriaField.java index 660ec82..3275bc8 100644 --- a/src/main/java/cn/axzo/pokonyan/dao/wrapper/CriteriaField.java +++ b/src/main/java/cn/axzo/pokonyan/dao/wrapper/CriteriaField.java @@ -32,6 +32,12 @@ public @interface CriteriaField { */ boolean filterNull() default true; + /** + * 默认为true,当value为""的时候,自动过滤该查询条件. + * @return + */ + boolean filterBlank() default true; + /** * 是否忽略该字段的查询条件 * diff --git a/src/main/java/cn/axzo/pokonyan/dao/wrapper/CriteriaWrapper.java b/src/main/java/cn/axzo/pokonyan/dao/wrapper/CriteriaWrapper.java index 3ff907b..ee7f244 100644 --- a/src/main/java/cn/axzo/pokonyan/dao/wrapper/CriteriaWrapper.java +++ b/src/main/java/cn/axzo/pokonyan/dao/wrapper/CriteriaWrapper.java @@ -338,6 +338,12 @@ public class CriteriaWrapper { return null; } + if (fieldAnnotation.filterBlank() + && (value instanceof String) + && StringUtils.isBlank((String) value)) { + return null; + } + String fieldName = Strings.isNullOrEmpty(fieldAnnotation.field()) ? field : fieldAnnotation.field(); // XXX 注解中获取的operator如果为EQ,无法判断是用户手动设置为EQ还是使用的默认operator.EQ,这里暂时保持原状 return build(fieldName, fieldAnnotation.operator(), value, fieldAnnotation.prefix());