在操作Mysql数据库一些字段的时候经常会存在以下问题

1: 忘记设计字段的默认值

2: 日期字段设置了自动更新,但是记录修改后设置自动更新的日期字段未发生变化

(导致原因:a:属性拷贝时直接拷贝了原始原始日期值;b: 查询原纪录后,只修改了其中部分值,更新时间未设置为null或最新日期值,使用的还是原始记录的更新时间值)

针对以上问题解决方式,下面以数据库中update_time更新时间字段为例:

 一: 通过注解方式

@TableField(fill = FieldFill.UPDATE, update = "NOW()")

/**      * 行修改时间      * 该注解可以设置更新时间为数据库服务器当前时间      * 更新操作均适用      * update/saveOrUpdate/saveOrUpdateBatch/updateById/updateBatchById      */     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")     @TableField(fill = FieldFill.UPDATE, update = "NOW()")     private LocalDateTime updateTime;

二: 注解 + 组件

@TableField(fill = FieldFill.INSERT_UPDATE) + MetaObjectHandler

/**      * 行修改时间      * 插入和更新时填充字段      */     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")     @TableField(fill = FieldFill.INSERT_UPDATE)     private LocalDateTime updateTime;

import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.LocalDateTimeUtil; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; import java.util.Date; /**  * @author louis  * @description: 元对象字段填充控制器实现类,实现公共字段自动写入  * @date 2022-10-31  * @version 1.0  */ @Component public class MybatisplusHandler implements MetaObjectHandler {     @Override     public void insertFill(MetaObject metaObject) {         this.setFieldValByName("updateTime", LocalDateTimeUtil.now(), metaObject);     }           @Override     public void updateFill(MetaObject metaObject) {         this.setFieldValByName("updateTime", LocalDateTimeUtil.now(), metaObject);     } }

推荐链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: