关于batchSave(tableName, recordList, size)

我在使用Db.batchSave(tableName, recordList, batchSize)时,遇到一个问题,不知道算不算是一个BUG

使用过程如下:

指定表名“table”

定义 recordList 为 “records”,定义Record对象为 rd

假如有10个rd

前五个rd值为

rd.set("userId", 1);

rd.set("roleId", p);


后五个rd值为

rd.set("userId", 1);

rd.set("unitId", p);


p为动态参数

执行Db.batchSave(“table”, records, 10)成功

然后数据库中前五条数据达到预期,后五条数据只存了userId,其他都为null




评论区

JFinal

2019-05-24 22:11

batch 的本质是 一条 sql 管到 n 条数据

也就是说 n 条数据要共享同一条 sql, 这条 sql 从哪里来? 当然是根据你的数据来生成一条, jfinal 选择了根据你的第一条数据来生成 sql

因此, sql 与你的第一条数据是密切相关的,所以你后面所有的数据都要与第一条数据格式一致,包括次序也要一致

听风道长

2019-05-24 22:13

@JFinal 想到了问题所在,但是如果支持这种方式就完美了^_^,目前只能是分两步实现

JFinal

2019-05-24 22:17

@听风道长 支持数据格式不同的,那就不是 batch 操作了, batch 的前提就是一个规则多条数据