From f323d04d57fe41753fe3bba9a5dcf5180f81e6cb Mon Sep 17 00:00:00 2001 From: ZhouXY108 Date: Fri, 5 Jun 2026 20:08:08 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20`ParamBuilder#buildParams`=20?= =?UTF-8?q?=E4=B8=AD=E4=B8=BA=E5=B8=B8=E7=94=A8=E6=95=B0=E6=8D=AE=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E6=B7=BB=E5=8A=A0=E7=9F=AD=E8=B7=AF=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 提取 buildParams 中的 lambda 为 handleItem 方法,并在 Optional 系列检测之前,为 null、CharSequence、Number、Boolean、Temporal 等高频类型增加提前返回逻辑,提升批量参数构建时的处理效率。 附带行为变化:CharSequence 实现类(如 StringBuilder/StringBuffer)现在会通过 toString() 转为 String 后再传递。 --- .../java/xyz/zhouxy/jdbc/ParamBuilder.java | 48 +++++++++++++------ 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/src/main/java/xyz/zhouxy/jdbc/ParamBuilder.java b/src/main/java/xyz/zhouxy/jdbc/ParamBuilder.java index d7f3638..b335e9c 100644 --- a/src/main/java/xyz/zhouxy/jdbc/ParamBuilder.java +++ b/src/main/java/xyz/zhouxy/jdbc/ParamBuilder.java @@ -17,6 +17,7 @@ package xyz.zhouxy.jdbc; import java.sql.PreparedStatement; +import java.time.temporal.Temporal; import java.util.Arrays; import java.util.Collection; import java.util.Collections; @@ -51,24 +52,41 @@ public class ParamBuilder { return EMPTY_OBJECT_ARRAY; } return Arrays.stream(params) - .map(param -> { - if (param instanceof Optional) { - return OptionalTools.orElseNull((Optional) param); - } - if (param instanceof OptionalInt) { - return OptionalTools.toInteger((OptionalInt) param); - } - if (param instanceof OptionalLong) { - return OptionalTools.toLong((OptionalLong) param); - } - if (param instanceof OptionalDouble) { - return OptionalTools.toDouble((OptionalDouble) param); - } - return param; - }) + .map(ParamBuilder::handleItem) .toArray(); } + private static Object handleItem(Object param) { + if (param == null) { + return null; + } + if (param instanceof CharSequence) { + return param.toString(); + } + if (param instanceof Number) { + return param; + } + if (param instanceof Boolean) { + return param; + } + if (param instanceof Temporal) { + return param; + } + if (param instanceof Optional) { + return OptionalTools.orElseNull((Optional) param); + } + if (param instanceof OptionalInt) { + return OptionalTools.toInteger((OptionalInt) param); + } + if (param instanceof OptionalLong) { + return OptionalTools.toLong((OptionalLong) param); + } + if (param instanceof OptionalDouble) { + return OptionalTools.toDouble((OptionalDouble) param); + } + return param; + } + public static List buildBatchParams(final Collection c, final Function func) { AssertTools.checkNotNull(c, "The collection can not be null."); AssertTools.checkNotNull(func, "The func can not be null.");