关于Db.update和Model的updat方法增强改进建议!

@Jfinal

现在Record和Model内部除了维护一个查询到的字段列表外,还维护了一个被修改的字段列表,这样在拼接update的语句的时候,只拼接被修改的字段,而where条件是直接强制只使用主键字段。这样会有一个问题。当两个线程都检索到同一条数据,两个线程代码修改完数据保存的时候,后执行的会把先执行的强制覆盖掉。能不能给Db和Model增加一个update2方法(方面名由波总定,起个更贴切的名字或则给update方法增加一个boolean参数的重载方法)其行为是:当检索到一个record或则model后,修改了其中的字段值,拼接set的时候还是只拼接修改的字段,但在拼接where条件的时候,除了强制拼接主键字段外,还把原始检索的字段和值都拼接进去作为where条件(只拼接检索的字段,比如一个表有10个字段,本次检索只检索了除了主键字段外的5个字段,where就拼接主键字段和这5个字段)。这样可以保证数据在检索和保存之间这段时间不会出现脏数据,数据脏了就保存不进去了。不知道我表达清楚没,这种情况在某种场景下还是很有用的。

恳请波总斟酌!

评论区

JFinal

2026-04-17 17:21

纯事务问题,与功能无关

热门反馈

扫码入社