使用Groovy SQL的withBatch更新数据库表

时间:2019-05-10 10:52:18

标签: sql groovy

我的代码是:

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 个答案:

答案 0 :(得分:1)

结果与批处理大小无关,而与执行的查询有关。因此,假设您的数据库中的每个keyvalue都包含一行,则对于执行的每个查询,您都会得到 221 (这里不关心批大小),而您得到的 1 分别执行。

From the docs

  

返回:

     

一组更新计数,其中包含批处理中每个绑定的一个元素。数组的元素根据命令执行的顺序进行排序。