Следующее работает, но как я могу собрать несколько MapSqlParameterSource и вставить их все одним пакетом?
new SimpleJdbcInsert(ds).withTableName(TABLENAME);
MapSqlParameterSource entry = new MapSqlParameterSource()
.addValue("id", report.queryId, Types.INTEGER)
.addValue("firstname", report.reportDate, Types.DATE)
.addValue("age", report.completionRatio, Types.INTEGER);
insert.execute(entry);




К счастью, SimpleJdbcInsert может принимать массив (а не список) MapSqlParameterSource. Так что это возможно следующим образом:
List<MapSqlParameterSource> entries = new ArrayList<>();
entries.add(entry);
MapSqlParameterSource[] array = entries.toArray(new MapSqlParameterSource[entries.size()]);
insert.executeBatch(array);
Есть лучший способ сделать это с SqlParameterSourceUtils
private final List<Map<String, Object>> records = new LinkedList<>();
final SimpleJdbcInsert statement = new SimpleJdbcInsert(dataSource)
.withTableName("stats")
.usingGeneratedKeyColumns("id")
.usingColumns("document", "error", "run", "celex");
statement.executeBatch(SqlParameterSourceUtils.createBatch(records));
@downvote: я не знаю, почему это не должно быть жизнеспособным вопросом. В частности, как видно ниже, на этот вопрос есть точное решение ...