import java.util.List;
import java.util.Map;
public class SQLConverter {
public static String convertToBatchInsertSQL(List<Map<String, Object>> dataList, String tableName) {
StringBuilder sqlBuilder = new StringBuilder();
StringBuilder columnsBuilder = new StringBuilder();
StringBuilder valuesBuilder = new StringBuilder();
for (Map.Entry<String, Object> entry : dataList.get(0).entrySet()) {
String column = entry.getKey();
if (columnsBuilder.length() > 0) {
columnsBuilder.append(", ");
}
columnsBuilder.append(column);
}
for (Map<String, Object> data : dataList) {
StringBuilder singleValueBuilder = new StringBuilder();
for (Map.Entry<String, Object> entry : data.entrySet()) {
Object value = entry.getValue();
if (singleValueBuilder.length() > 0) {
singleValueBuilder.append(", ");
}
singleValueBuilder.append(formatValue(value));
}
if (valuesBuilder.length() > 0) {
valuesBuilder.append(", ");
}
valuesBuilder.append("(").append(singleValueBuilder).append(")");
}
if (valuesBuilder.length() > 0) {
sqlBuilder.append("INSERT INTO ").append(tableName).append(" (").append(columnsBuilder).append(") VALUES ").append(valuesBuilder).append(";");
}
return sqlBuilder.toString();
}
private static String formatValue(Object value) {
if (value == null) {
return "NULL";
} else if (value instanceof String) {
return "'" + value + "'";
} else {
return value.toString();
}
}
}
分批次高效插入数据库的方法,通用方法。解决mybatis 2100参数问题