概述
问题场景
- 在数据库的插入或者更新操作时,有时候需要自动填充。考虑一个场景,数据库种有两个字段分别是“create_time”和“update_time”我们需要在插入数据的时候自动记录插入数据的时间,也需要在对数据有任何更新操作时,自动记录更新数据的时间。
- 上面举出了最常用的自动填充的场景。下面的解决方案也是针对这个场景,其他的场景可以用同样的思路解决。
解决方案
- 思路分析:思考如何自动填充的问题需要具体解决如下几个问题:
- 那些字段需要自动填充?
- 这些字段在什么时候自动填充?(第一次插入数据的时候,还是数据有更新的时候等等)
- 自动填充的时候填充什么内容?
- 解决第1、2个问题就是在实体类上需要自动填充的属性(字段)上添加注解,并且指定自动填充的策略。
- gmtCreate字段 指创建时间
- gmtModified字段 指修改时间
- @TableField(fill = FieldFill.INSERT) 注解 指该字段使用自动填充,自动填充的策略是FieldFill.INSERT,即数据插入的时候自动填充
- @TableField(fill = FieldFill.INSERT_UPDATE) 注解 指该字段使用自动填充,自动填充的策略是FieldFill.INSERT_UPDATE,即数据插入和更新的时候自动填充
@TableField(fill = FieldFill.INSERT)
private Date gmtCreate;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date gmtModified;
- 解决第3个问题:自定义一个组件实现MetaObjectHandler,用来指定自动填充时自动插入(更新)数据库的内容,也就是如何按照我们的意愿往数据库里边自动填充东西 ,这需要我们自己定义。
- 代码如下:
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
//属性名
this.setFieldValByName("gmtCreate", new Date(), metaObject);
this.setFieldValByName("gmtModified", new Date(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("gmtModified", new Date(), metaObject);
}
}
- 如此一来,时候使用Mybatis-Plus操作数据库就不要考虑自动填充的字段,那些字段会自动生成相关的数据。
最后
以上就是阳光洋葱为你收集整理的使用Mybatis-Plus实现往数据库种插入数据时指定字段的数据自动填充的全部内容,希望文章能够帮你解决使用Mybatis-Plus实现往数据库种插入数据时指定字段的数据自动填充所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复