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



我的代码为:

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的条目。

我在这里缺少什么?

结果与批处理大小无关,而与执行的查询有关。因此,给出的是,您的数据库包含每个keyvalue的一行,您可以获得每个执行的查询的 221 (此处不关心批处理大小(和更新的 1 由每个执行。

来自文档:

返回:

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

最新更新