diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataContext.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataContext.java index 871783469f97..35409b3610d8 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataContext.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataContext.java @@ -36,6 +36,7 @@ import org.springframework.jdbc.support.JdbcUtils; import org.springframework.util.Assert; import org.springframework.util.CollectionUtils; +import org.springframework.util.LinkedCaseInsensitiveMap; import org.springframework.util.StringUtils; /** @@ -265,18 +266,17 @@ public List matchInParameterValuesWithInsertColumns(SqlParameterSource p * @param inParameters the parameter names and values */ public List matchInParameterValuesWithInsertColumns(Map inParameters) { - List values = new ArrayList<>(inParameters.size()); + List values = new ArrayList<>(this.tableColumns.size()); + + LinkedCaseInsensitiveMap caseInsensitiveLookup = new LinkedCaseInsensitiveMap<>(inParameters.size()); + caseInsensitiveLookup.putAll(inParameters); + for (String column : this.tableColumns) { Object value = inParameters.get(column); if (value == null) { value = inParameters.get(column.toLowerCase(Locale.ROOT)); if (value == null) { - for (Map.Entry entry : inParameters.entrySet()) { - if (column.equalsIgnoreCase(entry.getKey())) { - value = entry.getValue(); - break; - } - } + value = caseInsensitiveLookup.get(column); } } values.add(value);