开发者

MybatisPlus自动填充创建(更新)时间问题

开发者 https://www.devze.com 2024-09-23 10:22 出处:网络 作者: Java王小怪
目录MyBATisPlus自动填充创建(更新)时间一、实现MetaObjectHandler二、使用注解总结MybatisPlus自动填充创建(更新)时间
目录
  • MyBATisPlus自动填充创建(更新)时间
    • 一、实现MetaObjectHandler
    • 二、使用注解
  • 总结

    MybatisPlus自动填充创建(更新)时间

    在大多数情况下,我们在创建数据库时都会加上创建、更新时间这些字段,为了保证数据的可追溯性,当然肯定还是有操作日志记录表用来做追溯记录。

    开发中每一次的创建更新都需要手动去设置这一次操作的时间,会有很多的代码冗余。

      `create_time` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
      `create_user` bigint DEFAULT NULL COMMENT '创建人',
      `update_time` datetimejs DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
      `update_user` bigint DEFAULT NULL COMMENT '更新人',
      `status` tinyint DEFAULT '1' COMMENT '状态(备用)',
      `is_deletjsed` tinyint DEFAULT '0' COMMENT '逻辑删除

    这个时候,有没有一种方法可以帮我们自动维护这些字段呢?

    在这里的话,不得不提到MybatisPlus的功能强大了。MybatisPlus有一个扩展功能:自动填充。

    此功能常见的应用场景为,插入数据的时候自动添加创建时间、创建人、修改时间、修改人、删除标记。

    通过实现MetaObjectHandler接口,重写insertFillupdateFill方法,当我们插入和修改数据的时候可以自动添加指定字段的值,这些不就是我们想要的效果吗?

    话不多说,上代码!

    一、实现MejavascripttaObjectHandler

    @Component
    public class MybatisHandler implements MetaObjectHandler {
    	@Override
    	public void insertFill(MetaObject metaObject) {
    		//属性名
    		this.setFieldValByName("createTime", new Date(), metaObject);
    		//this.setFieldValByName("createUser", SecureUtil.getpythonUserId(), metaObject);
            //不维护create_user可以不使用这行代码
    	}
    
    	@Override
    	public void updateFill(MetaObject metaObject) {
    		//属性名
    		this.setFieldValByName("updateTime", new Date(), metaObject);
    		//this.setFieldValByName("updateUser", SecureUtil.getUserId(), metaObject);
    	}
    }

    二、使用注解

    MybatisPlus自动填充创建(更新)时间问题

        /**
    	 * 进行新增或者更新操作时
    	 * 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)
    	privat编程客栈e Date updateTime;

    这样就可以做到自动维护更新、创建时间啦!

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消