top-think/think

saveAll()方法批量更新、新增的问题

Closed this issue · 1 comments

实践情况:需要设订单号为主键,且要根据订单号进行数据表的增量更新

  • 当使用saveAll()方法添加数据时,数据中如果包含id字段会默认为需要更新数据。这样会导致新增数据失败

  • 而如果把主键名改为其他的话,saveAll()方法又会默认此为新增数据,会导致更新数据失败

  • 初步判断saveAll()方法判断时更新还是新增数据时,根据的是数据中是否有id字段。

  • 在数据表增量更新实践中,建议新增数据用静态updata()方法,更新数据用saveAll();(仅对主键不为自增id的情况下)

结论:

  1. saveAll()方法只能更新主键名为id的数据;
  2. saveAll()方法新增主键名为id的数据会失败;
  3. 在数据表增量更新实践中,建议新增数据用静态create()方法,更新数据用saveAll();(仅对主键不为自增id的情况下);

对主键不能为自增的表数据操作极不友好

本人小白,期待大神能解决此问题,或者有替代方案;

得了,更新用saveAll(),新增用insertAll(),也挺好