Refactor parameter matching to use LinkedCaseInsensitiveMap for improved efficiency

Signed-off-by: belljun3395 <195850@jnu.ac.kr>
This commit is contained in:
belljun3395 2025-09-11 23:50:52 +09:00
parent 11892fb14b
commit cdb149bc3e
1 changed files with 4 additions and 6 deletions

View File

@ -18,7 +18,6 @@ package org.springframework.jdbc.core.metadata;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
@ -37,6 +36,7 @@ import org.springframework.jdbc.core.namedparam.SqlParameterSourceUtils;
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;
/**
@ -268,17 +268,15 @@ public class TableMetaDataContext {
public List<Object> matchInParameterValuesWithInsertColumns(Map<String, ?> inParameters) {
List<Object> values = new ArrayList<>(this.tableColumns.size());
Map<String, Object> caseInsensitiveLookup = new HashMap<>(inParameters.size());
for (Map.Entry<String, ?> entry : inParameters.entrySet()) {
caseInsensitiveLookup.put(entry.getKey().toLowerCase(Locale.ROOT), entry.getValue());
}
LinkedCaseInsensitiveMap<Object> 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) {
value = caseInsensitiveLookup.get(column.toLowerCase(Locale.ROOT));
value = caseInsensitiveLookup.get(column);
}
}
values.add(value);