使用MyBatis时如何自动更新创建/修改日期等字段?
我正在使用 MyBatis,并希望在“创建”、“修改”的每个表上实现 2 个字段。它们都是日期字段。有没有办法在插入或更新时自动更新这些字段?当然,我可以调整映射,但我想知道是否有更通用和更干燥的方法来做到这一点?
I am using MyBatis and want to implement 2 fields on every table 'created', 'modified'. Both off them are date fields. Is there a way of automatically update these fields on an insert or update? Of course, I can adjust the mappings, but I was wondering if there is a more generic and DRY way of doing this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不,mybatis 没有机制可以自动执行此操作,无需您编写 sql 映射来更新列。
一种替代方法是数据库触发器。但我不确定我是否会建议这样做,我们只是在 sql 映射中对其进行编码。
您可以像这样在 SQL 映射中对其进行编码,
或者,
No, mybatis has no mechanism to do this automatically without you coding your sql maps to update the columns.
One alternative would be database triggers. I'm not certain I would recommend that though, we just code it in the sql maps.
You could code it in the SQL maps like this,
or,
你可以使用mybatis拦截器
这是我的示例(使用 springboot):
就我而言,BaseEntity是所有实体的超类,我需要在mybatis更新或插入数据库之前做一些事情。
第1步:在BaseEntity中创建init方法用于更新或插入
第2步:添加mybatis拦截器
第3步:添加到springboot配置中的bean上下文
第 4 步:Dao 和 Mapper.xml
例如:Dao
Mapper.xml
第 5 步:测试
更多信息:https://mybatis.org/mybatis-3/configuration.html#plugins
you can use mybatis Interceptor
here is my example (using springboot):
in mycase, BaseEntity is the super class of all entity,i need do some thing before update or insert to database by mybatis.
step 1: create init method in BaseEntity for update or insert
step 2: add a mybatis interceptor
step 3: add to bean Context in springboot config
step 4: Dao and Mapper.xml
eg:Dao
Mapper.xml
step 5: test
More information here: https://mybatis.org/mybatis-3/configuration.html#plugins