MybatisPlus自动填充创建(更新)时间
短信预约 -IT技能 免费直播动态提醒
目录
在大多数情况下,我们在创建数据库时都会加上创建、更新时间这些字段,为了保证数据的可追溯性,当然肯定还是有操作日志记录表用来做追溯记录。开发中每一次的创建更新都需要手动去设置这一次操作的时间,会有很多的代码冗余。
`create_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间', `create_user` bigint DEFAULT NULL COMMENT '创建人', `update_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `update_user` bigint DEFAULT NULL COMMENT '更新人', `status` tinyint DEFAULT '1' COMMENT '状态(备用)', `is_deleted` tinyint DEFAULT '0' COMMENT '逻辑删除
这个时候,有没有一种方法可以帮我们自动维护这些字段呢?
在这里的话,不得不提到MybatisPlus的功能强大了。MybatisPlus有一个扩展功能:自动填充。此功能常见的应用场景为,插入数据的时候自动添加创建时间、创建人、修改时间、修改人、删除标记。通过实现MetaObjectHandler
接口,重写insertFill
、updateFill
方法,当我们插入和修改数据的时候可以自动添加指定字段的值,这些不就是我们想要的效果吗?
话不多说,上代码!
一、实现MetaObjectHandler
@Componentpublic class MybatisHandler implements MetaObjectHandler {@Overridepublic void insertFill(MetaObject metaObject) {//属性名this.setFieldValByName("createTime", new Date(), metaObject);//this.setFieldValByName("createUser", SecureUtil.getUserId(), metaObject); //不维护create_user可以不使用这行代码}@Overridepublic void updateFill(MetaObject metaObject) {//属性名this.setFieldValByName("updateTime", new Date(), metaObject);//this.setFieldValByName("updateUser", SecureUtil.getUserId(), metaObject);}}
二、使用注解
@TableField(fill= FieldFill.INSERT)private Long createUser;@TableField(fill=FieldFill.INSERT)private Date createTime;@TableField(fill=FieldFill.UPDATE)private Long updateUser;@TableField(fill=FieldFill.UPDATE)private Date updateTime;
这样就可以做到自动维护更新、创建时间啦!
来源地址:https://blog.csdn.net/m0_71239320/article/details/128342037
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341