diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/PreparedStatementCreatorFactory.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/PreparedStatementCreatorFactory.java index 98fcc67882..a0aed932d8 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/PreparedStatementCreatorFactory.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/PreparedStatementCreatorFactory.java @@ -31,7 +31,6 @@ import java.util.Set; import org.springframework.dao.InvalidDataAccessApiUsageException; import org.springframework.lang.Nullable; import org.springframework.util.Assert; -import org.springframework.util.ObjectUtils; /** * Helper class that efficiently creates multiple {@link PreparedStatementCreator} @@ -268,19 +267,13 @@ public class PreparedStatementCreatorFactory { } declaredParameter = declaredParameters.get(i); } - if (in != null && in.getClass().isArray()) { - in = Arrays.asList(ObjectUtils.toObjectArray(in)); - } if (in instanceof Iterable && declaredParameter.getSqlType() != Types.ARRAY) { Iterable entries = (Iterable) in; for (Object entry : entries) { - if (entry != null && entry.getClass().isArray()) { - entry = Arrays.asList(ObjectUtils.toObjectArray(entry)); - } - if (entry instanceof Iterable) { - Iterable values = (Iterable) entry; - for (Object value : values) { - StatementCreatorUtils.setParameterValue(ps, sqlColIndx++, declaredParameter, value); + if (entry instanceof Object[]) { + Object[] valueArray = (Object[]) entry; + for (Object argValue : valueArray) { + StatementCreatorUtils.setParameterValue(ps, sqlColIndx++, declaredParameter, argValue); } } else { diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterUtils.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterUtils.java index b45b8ffd85..79d95fdb0b 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterUtils.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterUtils.java @@ -17,7 +17,6 @@ package org.springframework.jdbc.core.namedparam; import java.util.ArrayList; -import java.util.Arrays; import java.util.HashSet; import java.util.Iterator; import java.util.List; @@ -29,7 +28,6 @@ import org.springframework.jdbc.core.SqlParameter; import org.springframework.jdbc.core.SqlParameterValue; import org.springframework.lang.Nullable; import org.springframework.util.Assert; -import org.springframework.util.ObjectUtils; /** * Helper methods for named parameter parsing. @@ -285,9 +283,6 @@ public abstract class NamedParameterUtils { if (value instanceof SqlParameterValue) { value = ((SqlParameterValue) value).getValue(); } - if (value != null && value.getClass().isArray()) { - value = Arrays.asList(ObjectUtils.toObjectArray(value)); - } if (value instanceof Iterable) { Iterator entryIter = ((Iterable) value).iterator(); int k = 0; diff --git a/spring-jdbc/src/test/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplateTests.java b/spring-jdbc/src/test/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplateTests.java index d76a4c8594..4d9c56ce68 100644 --- a/spring-jdbc/src/test/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplateTests.java +++ b/spring-jdbc/src/test/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplateTests.java @@ -477,7 +477,7 @@ public class NamedParameterJdbcTemplateTests { @SuppressWarnings("unchecked") Map[] parameters = new Map[3]; parameters[0] = Collections.singletonMap("ids", Arrays.asList(1, 2)); - parameters[1] = Collections.singletonMap("ids", new Integer[] {3, 4}); + parameters[1] = Collections.singletonMap("ids", Arrays.asList("3", "4")); parameters[2] = Collections.singletonMap("ids", (Iterable) () -> Arrays.asList(5, 6).iterator()); final int[] rowsAffected = new int[] {1, 2, 3}; @@ -500,8 +500,8 @@ public class NamedParameterJdbcTemplateTests { inOrder.verify(preparedStatement).setObject(2, 2); inOrder.verify(preparedStatement).addBatch(); - inOrder.verify(preparedStatement).setObject(1, 3); - inOrder.verify(preparedStatement).setObject(2, 4); + inOrder.verify(preparedStatement).setString(1, "3"); + inOrder.verify(preparedStatement).setString(2, "4"); inOrder.verify(preparedStatement).addBatch(); inOrder.verify(preparedStatement).setObject(1, 5);