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

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

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

在这里插入图片描述

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

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

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

    数据库设置时间自动更新,修改表数据update_time自动更新_第1张图片

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

数据库设置时间自动更新,修改表数据update_time自动更新_第2张图片

  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("[email protected]");
              userMapper.insert(user);
          }
      

你可能感兴趣的:(MySQL,mybatis-plus)