refactor: ParamBuilder#buildParams 中为常用数据类型添加短路处理

提取 buildParams 中的 lambda 为 handleItem 方法,并在 Optional 系列检测之前,为 null、CharSequence、Number、Boolean、Temporal 等高频类型增加提前返回逻辑,提升批量参数构建时的处理效率。

附带行为变化:CharSequence 实现类(如 StringBuilder/StringBuffer)现在会通过 toString() 转为 String 后再传递。
This commit is contained in:
2026-06-05 20:08:08 +08:00
parent eabd5d7f77
commit f323d04d57

View File

@@ -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 <T> List<Object[]> buildBatchParams(final Collection<T> c, final Function<T, Object[]> func) {
AssertTools.checkNotNull(c, "The collection can not be null.");
AssertTools.checkNotNull(func, "The func can not be null.");