Compare commits

...

3 Commits

Author SHA1 Message Date
belljun3395 05167cc120
Merge cdb149bc3e into 30db2e4fb5 2025-10-07 17:22:46 +03:00
belljun3395 cdb149bc3e Refactor parameter matching to use LinkedCaseInsensitiveMap for improved efficiency
Signed-off-by: belljun3395 <195850@jnu.ac.kr>
2025-09-11 23:50:52 +09:00
belljun3395 11892fb14b Optimize parameter matching in TableMetaDataContext
Replace nested loop with pre-computed case-insensitive lookup map,
reducing time complexity from O(n×m) to O(n+m) where n = number
of columns and m = number of parameters.

Before: Iterates through all parameter entries for each column
when case-insensitive matching is needed.

After: Build HashMap once for O(1) case-insensitive lookups.

Signed-off-by: belljun3395 <195850@jnu.ac.kr>
2025-09-04 22:31:49 +09:00
1 changed files with 7 additions and 7 deletions

View File

@ -36,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;
/**
@ -265,18 +266,17 @@ public class TableMetaDataContext {
* @param inParameters the parameter names and values
*/
public List<Object> matchInParameterValuesWithInsertColumns(Map<String, ?> inParameters) {
List<Object> values = new ArrayList<>(inParameters.size());
List<Object> values = new ArrayList<>(this.tableColumns.size());
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) {
for (Map.Entry<String, ?> entry : inParameters.entrySet()) {
if (column.equalsIgnoreCase(entry.getKey())) {
value = entry.getValue();
break;
}
}
value = caseInsensitiveLookup.get(column);
}
}
values.add(value);