创建参数构建器。

This commit is contained in:
zhouxy108 2023-06-27 01:57:30 +08:00
parent 759ad5fcbe
commit f4a12f1695
2 changed files with 46 additions and 29 deletions

View File

@ -25,6 +25,7 @@ import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -35,11 +36,14 @@ import java.util.OptionalLong;
import java.util.function.Function;
import java.util.stream.Collectors;
import org.apache.commons.lang3.ArrayUtils;
import com.google.common.annotations.Beta;
import com.google.common.collect.Lists;
import xyz.zhouxy.plusone.commons.util.Assert;
import xyz.zhouxy.plusone.commons.util.MoreArrays;
import xyz.zhouxy.plusone.commons.util.MoreCollections;
import xyz.zhouxy.plusone.commons.util.OptionalUtil;
@Beta
@ -49,33 +53,6 @@ public class SimpleJdbcTemplate {
return new JdbcExecutor(conn);
}
public static Object[] buildParams(final Object... params) {
return Arrays.stream(params)
.map(param -> {
if (param instanceof Optional) {
return OptionalUtil.orElseNull((Optional<?>) param);
}
if (param instanceof OptionalInt) {
OptionalInt p = ((OptionalInt) param);
return p.isPresent() ? p.getAsInt() : null;
}
if (param instanceof OptionalLong) {
OptionalLong p = ((OptionalLong) param);
return p.isPresent() ? p.getAsLong() : null;
}
if (param instanceof OptionalDouble) {
OptionalDouble p = ((OptionalDouble) param);
return p.isPresent() ? p.getAsDouble() : null;
}
return param;
})
.toArray();
}
public static <T> List<Object[]> buildBatchParams(final Collection<T> c, Function<T, Object[]> function) {
return c.stream().map(function).collect(Collectors.toList());
}
public static String paramsToString(Object[] params) {
return Arrays.toString(params);
}
@ -252,4 +229,43 @@ public class SimpleJdbcTemplate {
void execute() throws SQLException, T;
}
}
public static class ParamBuilder {
public static Object[] buildParams(final Object... params) {
if (ArrayUtils.isEmpty(params)) {
return ArrayUtils.EMPTY_OBJECT_ARRAY;
}
return Arrays.stream(params)
.map(param -> {
if (param instanceof Optional) {
return OptionalUtil.orElseNull((Optional<?>) param);
}
if (param instanceof OptionalInt) {
return OptionalUtil.toInteger(((OptionalInt) param));
}
if (param instanceof OptionalLong) {
return OptionalUtil.toLong(((OptionalLong) param));
}
if (param instanceof OptionalDouble) {
return OptionalUtil.toDouble(((OptionalDouble) param));
}
return param;
})
.toArray();
}
public static <T> List<Object[]> buildBatchParams(final Collection<T> c, final Function<T, Object[]> function) {
Assert.notNull(c, "The collection can not be null.");
Assert.notNull(function, "The function can not be null.");
if (MoreCollections.isEmpty(c)) {
return Collections.emptyList();
}
return c.stream().map(function).collect(Collectors.toList());
}
private ParamBuilder() {
throw new IllegalStateException("Utility class");
}
}
}

View File

@ -3,6 +3,7 @@ package xyz.zhouxy.plusone.commons.util;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static xyz.zhouxy.plusone.commons.jdbc.JdbcSql.IN;
import static xyz.zhouxy.plusone.commons.jdbc.SimpleJdbcTemplate.ParamBuilder.*;
import java.sql.Connection;
import java.sql.SQLException;
@ -49,7 +50,7 @@ class SimpleJdbcTemplateTests {
@Test
void testQuery() throws SQLException {
try (Connection conn = this.dataSource.getConnection()) {
Object[] params = SimpleJdbcTemplate.buildParams("501533", "501554", "544599");
Object[] params = buildParams("501533", "501554", "544599");
String sql = SQL.newJdbcSql()
.SELECT("*")
.FROM("test_table")