在阿里的java开发手册中提到表必备三字段
那么我们怎么实现这两个字段的自动更新呢
数据库设置其为自动更新(这种方式不建议使用,在正常开发中我们一般没有相关权限)
给create_time字段设置默认属性CURRENT_TIMESTAMP
给update_time设置默认属性CURRENT_TIMESTAMP,并让他根据当前时间戳更新
在开发中使用相关插件帮我们实现:mybatis-plus
在实体类中增加注解
@TableField(fill = FieldFill.INSERT) private Date createTime ; @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime; 其他相关注解:(这是源码中的解释) // 默认不处理 DEFAULT, // INSERT, // UPDATE, // INSERT_UPDATE 编写处理器来处理这个注解 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); } } 测试是否成功 @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); }