Обновление таблицы БД с использованием Groovy SQL withBatch - PullRequest
0 голосов
/ 10 мая 2019

Мой код:

String updateQuery = "Update "+table+" Set "+columnToModify+"=:newvalue Where "+keyColumn+"=:keyvalue";
int[] modifyCount = sql.withBatch(batchSize, updateQuery) { ps ->
    keyValue.each { k,v ->
        ps.addBatch(keyvalue:k, newvalue:v)
    }
}

batchSize равен 100, а размер keyValue равен 221.

Так что я ожидаю, что три партии будут запущены с размером 100,100,21,И у modifyCount есть три записи по 100,100,21.

Но у modifyCount есть вместо 221 записи по значению 1 каждая.

Что мне здесь не хватает?

1 Ответ

1 голос
/ 10 мая 2019

Результат не о размере пакета, а о выполненных запросах. Таким образом, учитывая, что ваша БД содержит одну строку для каждого keyvalue, вы получаете 221 для каждого выполненного запроса (размер пакета здесь не имеет значения) и 1 для обновлений исполнено каждым.

Из документов :

Возвращает:

массив обновлений, содержащий один элемент для каждой привязки в пакете . Элементы массива упорядочены в соответствии с порядком выполнения команд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...