Как сделать batchUpdate вместо обновления на Namedparameterjdbctemplate - PullRequest
1 голос
/ 27 марта 2020

Я анализирую файл и создаю список строковых элементов, которые я вставляю в мою таблицу. Я пытаюсь установить размер пакета из 5 строк, вставленных за раз, и не могу понять, как использовать .batchupdate вместо .update в моем коде

1 Ответ

2 голосов
/ 27 марта 2020

Вы в настоящее время звоните update(String sql, SqlParameterSource paramSource).

Сравнимая пакетная версия: batchUpdate(String sql, SqlParameterSource[] batchArgs).

Так что это кажется довольно очевидным , чтобы сделать это как пакет, построить массив и сделать вызов.

final int batchSize = 5;

List<SqlParameterSource> args = new ArrayList<>();
for (ZygateEntity zygateInfo : parseData){
    SqlParameterSource source = new MapSqlParameterSource("account_name", zygateInfo.getAccountName())
            .addValue("command_name", zygateInfo.getCommandName())
            .addValue("system_name", zygateInfo.getSystemName())
            .addValue("CREATE_DT", zygateInfo.getCreateDt());
    args.add(source);
    if (args.size() == batchSize) {
        namedParameterJdbcTemplate.batchUpdate(sql, args.toArray(new SqlParameterSource[args.size()]));
        args.clear();
    }
}
if (! args.isEmpty()) {
    namedParameterJdbcTemplate.batchUpdate(sql, args.toArray(new SqlParameterSource[args.size()]));
}
...