重写model的save以及update方法

@JFinal 波总,我这边的问题是这样。所有的数据表都有创建时间以及数据修改时间。这样,我就需要重写save以及update方法,让其自动去更新这两个字段。请教下波总,该怎么做呢?看了下model的源码,还是一头雾水。。谢谢波总

评论区

qiushui90

2017-02-24 09:56

看到了,重写MysqlDialect的forModelSave方法,可以实现

JFinal

2017-02-24 10:59

@qiushui90 有很多解决方案,以下方案选择其一即可:
1:在自己的 model 中创建一个boolean filter(int type) 方法去实现,这个方法会被save()、update() 回调
2:在自己的 model 中创建 save()、update() 覆盖掉父类的方法实现功能,最后再添加一句:return super.save(); 或 return super.update()
3:自己建个 BaseModel,再扩展一下 BaseModelGenereator,多生成一下 save()、update()方法,在其中实现功能

qiushui90

2017-02-24 11:16

@JFinal 恩,谢谢波总指点。
早上我自己琢磨了一下,目前是直接用了我上面的重写Mysql Dialect的相关方法,达到了目的,但是这种从整体上看,确实不好,这样实现方式还有其他问题吗?
波总的其他方案我后面也会来尝试下。

JFinal

2017-02-24 11:26

@qiushui90 不建议用 dialect 实现,因为你要的这个功能不属于 dialect 的功能范畴,项目在将来进化过程中,很可能忽视这里,造成问题

qiushui90

2017-02-24 11:27

好,谢谢波总,我尝试优化一下。

懵懂java人

2017-03-04 15:11

创建时间其实不用管,mysql数据库字段设置成timestamp,默认值为currentTimestamp,每次添加新数据就会自动生成创建时间,至于更新时间update时候自己手动加上该字段=now() 就好了吧。这样解耦度更高

chcode

2020-09-24 10:14

@JFinal 如果是批量更新呢,这样还是不够吧

热门反馈

扫码入社