pgsql中使用DB.batchUpdate遇到的bug

如果删掉红色框哪一行。只执行上面,是更新不了字段。只能更新DdIsOk(1)。DdIsOkCount(stock.getSingleCount)不会执行。如果业务逻辑中用Db.updateBatch的话,那就头大了。会忽略了部分字段。

image.png

评论区

杜福忠

2022-09-24 17:40

因为batchUpdate生成SQL是根据List集合第一条数据的_getAttrs字段,来生成的update语句,batch是需要执行同样SQL的对象才可以使用它的。

所以上面业务的改进方法是:
用两个List集合承载数据,然后用两次batchUpdate就可以了。
如果数据少的话(看到使用size了),可以直接Update,速度没太大差别,数据库都是连接池的,就多一个生成SQL的步骤