From 94f045841d056df975c94b84eeaf15390683c16d Mon Sep 17 00:00:00 2001 From: zhouxu Date: Wed, 22 Jun 2022 21:15:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=20`=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E5=99=A8`=EF=BC=9A=E4=BD=BF=20`onlySelect(..?= =?UTF-8?q?)`=20=E4=B8=8E=20`selectExclude(..)`=20=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E4=BC=A0=E5=85=A5=E5=BD=A2=E5=A6=82=20`age,n?= =?UTF-8?q?ame`=20=E8=BF=99=E6=A0=B7=E4=BB=A5=20`,`=20=E5=88=86=E9=9A=94?= =?UTF-8?q?=E7=9A=84=E5=AD=97=E7=AC=A6=E4=B8=B2=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 3 +- .../ejlchina/searcher/util/MapBuilder.java | 34 ++++++++++++------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 69f38be4..ec26967c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,8 @@ ### ✨ Better * Bean Searcher - * 参数构建器新增 `orderBy(FieldFn fieldFn)`、`orderBy(String fieldName)`、`asc()` 与 `desc()` 方法 + * 优化 `参数构建器`:新增 `orderBy(FieldFn fieldFn)`、`orderBy(String fieldName)`、`asc()` 与 `desc()` 方法 + * 优化 `参数构建器`:使 `onlySelect(..)` 与 `selectExclude(..)` 方法支持传入形如 `age,name` 这样以 `,` 分隔的字符串参数 * Bean Searcher Boot Starter * 优化:添加自定义参数过滤器时,不覆盖内置的参数过滤器 diff --git a/bean-searcher/src/main/java/com/ejlchina/searcher/util/MapBuilder.java b/bean-searcher/src/main/java/com/ejlchina/searcher/util/MapBuilder.java index 59028c0d..edaaec99 100644 --- a/bean-searcher/src/main/java/com/ejlchina/searcher/util/MapBuilder.java +++ b/bean-searcher/src/main/java/com/ejlchina/searcher/util/MapBuilder.java @@ -43,11 +43,7 @@ public MapBuilder put(String key, Object value) { */ @SafeVarargs public final MapBuilder onlySelect(FieldFn... fieldFns) { - String[] fields = new String[fieldFns.length]; - for (int i = 0; i < fields.length; i++) { - fields[i] = toFieldName(fieldFns[i]); - } - return onlySelect(fields); + return onlySelect(toFields(fieldFns)); } /** @@ -56,8 +52,7 @@ public final MapBuilder onlySelect(FieldFn... fieldFns) { * @return MapBuilder */ public MapBuilder onlySelect(String... fields) { - Collections.addAll(obtainList(ONLY_SELECT), fields); - return this; + return appendFields(obtainList(ONLY_SELECT), fields); } /** @@ -68,11 +63,7 @@ public MapBuilder onlySelect(String... fields) { */ @SafeVarargs public final MapBuilder selectExclude(FieldFn... fieldFns) { - String[] fields = new String[fieldFns.length]; - for (int i = 0; i < fields.length; i++) { - fields[i] = toFieldName(fieldFns[i]); - } - return selectExclude(fields); + return selectExclude(toFields(fieldFns)); } /** @@ -81,7 +72,24 @@ public final MapBuilder selectExclude(FieldFn... fieldFns) { * @return MapBuilder */ public MapBuilder selectExclude(String... fields) { - Collections.addAll(obtainList(SELECT_EXCLUDE), fields); + return appendFields(obtainList(SELECT_EXCLUDE), fields); + } + + @SafeVarargs + private final String[] toFields(FieldFn... fieldFns) { + String[] fields = new String[fieldFns.length]; + for (int i = 0; i < fields.length; i++) { + fields[i] = toFieldName(fieldFns[i]); + } + return fields; + } + + private MapBuilder appendFields(List list, String... fields) { + if (fields.length == 1) { + Collections.addAll(list, fields[0].split(",")); + } else { + Collections.addAll(list, fields); + } return this; }