如何 model 按非主键更新?

ArticleModel 表

ArticleModel . GeneralID  主键 唯一

ArticleModel . ArticleID  非主键 不唯一

ArticleModel . Title 标题

ArticleID更新表内容.

评论区

久伴轻尘

2021-08-13 10:25

update table set *** where atricleId=***

杜福忠

2021-08-13 10:34

Db.update(tableName, primaryKey, new Record().setColumns(model));

fangjunai

2021-08-13 10:48

@久伴轻尘 字段太多不太好些,

@杜福忠 Db.update(tableName, primaryKey, new Record().setColumns(model));
ArticleID 是多条记录比如 4条记录多是 ArticleID=2, 我要将ArticleID=2的更新. 可以忽略primaryKey吗?

fangjunai

2021-08-13 11:07

我只想批量更新 ArticleID=2 字段, 忽略primaryKey, 可以吗

fangjunai

2021-08-13 15:17

最后用了循环:
1. Db.query(ArticleID); 把主键找出来 GeneralID
2. 遍历主键 GeneralID , new Model 一个个添加到 list 里.
3. 再 Db.batchUpdate 保存.

有的时候一条SQL可以解决. 但在Db插件里操作非常复杂. 这种场景应该很多啊. 是否考虑下改进下?

INFECTION_K

2021-08-13 18:52

@fangjunai 一条SQL可以解决 为什么不直接执行一条sql?

杜福忠

2021-08-13 19:20

@fangjunai Db.update(tableName,"ArticleID", new Record().setColumns(model));
primaryKey 就是用来指明用哪个字段做where啊,忽略的话,就是默认值id了

fangjunai

2021-08-15 16:06

@INFECTION_K 主要是字段太多了, 手动写容易出错.
@杜福忠 谢谢 Db.update(tableName,"ArticleID", new Record().setColumns(model));
可以了, 但必须先把model里的主键剔除掉.