数据库设置时间自动更新,修改表数据update_time自动更新

数据库表时间字段自动更新

在阿里的java开发手册中提到表必备三字段

在这里插入图片描述

那么我们怎么实现这两个字段的自动更新呢

  1. 数据库设置其为自动更新(这种方式不建议使用,在正常开发中我们一般没有相关权限)

    • 给create_time字段设置默认属性CURRENT_TIMESTAMP

    在这里插入图片描述

    • 给update_time设置默认属性CURRENT_TIMESTAMP,并让他根据当前时间戳更新

在这里插入图片描述

  1. 在开发中使用相关插件帮我们实现mybatis-plus

    1. 在实体类中增加注解

      @TableField(fill = FieldFill.INSERT)
      private Date createTime ;
      @TableField(fill = FieldFill.INSERT_UPDATE)
      private Date updateTime;
      

      其他相关注解:(这是源码中的解释)

      // 默认不处理
      DEFAULT,
      //
      INSERT,
      //
      UPDATE,
      //
      INSERT_UPDATE
      
    2. 编写处理器来处理这个注解

      package com.xht.handler;
      
      import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
      import lombok.extern.slf4j.Slf4j;
      import org.apache.ibatis.reflection.MetaObject;
      import org.springframework.stereotype.Component;
      
      import java.util.Date;
      
      @Component
      @Slf4j
      public class MyMeta0bjectHandler implements MetaObjectHandler {
      //插入时填充
          @Override
          public void insertFill(MetaObject metaObject) {
              log.info("====>start insert fill.....");
              this.setFieldValByName("createTime",new Date(),metaObject);
              this.setFieldValByName("updateTime",new Date(),metaObject);
          }
      //更新时填充
          @Override
          public void updateFill(MetaObject metaObject) {
              log.info("====>start update fill.....");
              this.setFieldValByName("updateTime",new Date(),metaObject);
          }
      }
      
      
    3. 测试是否成功

       @Test
          void updateTest() {
      //        修改
              User user = new User();
              user.setName("xxx");
              user.setId(1265091801774092290L);
              user.setAge(18);
              int i = userMapper.updateById(user);
              System.out.println("受影响的行数======>"+i);
          }
      
          @Test
          void addTest() {
              //        添加
              User user = new User();
              user.setName("小明");
              user.setAge(2);
              user.setEmail("6666666@qq.com");
              userMapper.insert(user);
          }
      
  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值