refactor: ParamBuilder#buildParams 中为常用数据类型添加短路处理
提取 buildParams 中的 lambda 为 handleItem 方法,并在 Optional 系列检测之前,为 null、CharSequence、Number、Boolean、Temporal 等高频类型增加提前返回逻辑,提升批量参数构建时的处理效率。 附带行为变化:CharSequence 实现类(如 StringBuilder/StringBuffer)现在会通过 toString() 转为 String 后再传递。
This commit is contained in:
@@ -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.");
|
||||
|
||||
Reference in New Issue
Block a user