mybatisplus自动填充创建(更新)时间
在大多数情况下,我们在创建数据库时都会加上创建、更新时间这些字段,为了保证数据的可追溯性,当然肯定还是有操作日志记录表用来做追溯记录。
开发中每一次的创建更新都需要手动去设置这一次操作的时间,会有很多的代码冗余。
`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
@component public class mybatishandler implements metaobjecthandler { @override public void insertfill(metaobject metaobject) { //属性名 this.setfieldvalbyname("createtime", new date(), metaobject); //this.setfieldvalbyname("createuser", secureutil.getuserid(), metaobject); //不维护create_user可以不使用这行代码 } @override public void updatefill(metaobject metaobject) { //属性名 this.setfieldvalbyname("updatetime", new date(), metaobject); //this.setfieldvalbyname("updateuser", secureutil.getuserid(), metaobject); } }
二、使用注解
/** * 进行新增或者更新操作时 * mybatis自动进行维护时间 */ @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;
这样就可以做到自动维护更新、创建时间啦!
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论