-
Multi-row Insert Builder카테고리 없음 2025. 11. 20. 10:06
public String buildMultiRowInsertSql(
String tableName,
List<String> columns,
List<List<Object>> rows
) {
String columnPart = columns.stream()
.map(col -> "[" + col + "]")
.collect(Collectors.joining(", "));
StringBuilder sb = new StringBuilder();
sb.append("INSERT INTO ").append(tableName).append(" (")
.append(columnPart)
.append(")\nVALUES\n");
for (int i = 0; i < rows.size(); i++) {
List<Object> row = rows.get(i);
String valuePart = row.stream()
.map(this::toSqlValue)
.collect(Collectors.joining(", "));
sb.append("(").append(valuePart).append(")");
if (i < rows.size() - 1) sb.append(",\n");
}
return sb.toString();
}
private String toSqlValue(Object v) {
if (v == null) return "NULL";
if (v instanceof Number) return v.toString();
if (v instanceof java.util.Date)
return "'" + new java.sql.Timestamp(((Date) v).getTime()) + "'";
// escape single quotes
return "'" + v.toString().replace("'", "''") + "'";
}댓글