踩坑:

直接实现该接口,发现进入该类后的entity已经重新处理updateTime了,但是更新数据库的时候,却不带updateTime更新。

原因:

由于对该接口等认识不足导致。

解决方案:

实体类中需要添加注解:fill = FieldFill.INSERT_UPDATE

代码:

/**
* 更新时间
*/
@TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
private Long updateTime;
  1. /**
    * 新增,更新时,自动更新字段
    */
    @Component
    public class MyMetaObjectHandler implements MetaObjectHandler { private static String CREATE_TIME = "createTime";
    private static String UPDATE_TIME = "updateTime"; /**
    * 插入使用
    */
    @Override
    public void insertFill(MetaObject metaObject) {
    fillValue(metaObject, CREATE_TIME, () -> getDateValue(metaObject.getSetterType(CREATE_TIME)));
    fillValue(metaObject, UPDATE_TIME, () -> getDateValue(metaObject.getSetterType(UPDATE_TIME)));
    } @Override
    public void updateFill(MetaObject metaObject) {
    fillValue(metaObject, "et."+UPDATE_TIME, () -> getDateValue(metaObject.getSetterType("et."+UPDATE_TIME)));
    }
    private void fillValue(MetaObject metaObject, String fieldName, Supplier<Object> valueSupplier) {
    if (!metaObject.hasGetter(fieldName)) {
    return;
    }
    Object sidObj = metaObject.getValue(fieldName);
    if (sidObj == null && metaObject.hasSetter(fieldName) && valueSupplier != null) {
    setFieldValByName(fieldName, valueSupplier.get(), metaObject);
    }
    } private Object getDateValue(Class<?> setterType) {
    if (Date.class.equals(setterType)) {
    return new Date();
    } else if (LocalDateTime.class.equals(setterType)) {
    return LocalDateTime.now();
    } else if (Long.class.equals(setterType)){
    return System.currentTimeMillis();
    }
    return null;
    }
    }

Mybatisplus实现MetaObjectHandler接口自动更新创建时间更新时间的更多相关文章

  1. 通过自定义特性,使用EF6拦截器完成创建人、创建时间、更新人、更新时间的统一赋值(使用数据库服务器时间赋值,接上一篇)

    目录: 前言 设计(完成扩展) 实现效果 扩展设计方案 扩展后代码结构 集思广益(问题) 前言: 在上一篇文章我写了如何重建IDbCommandTreeInterceptor来实现创建人.创建时间.更 ...

  2. [mysql]设置创建时间,更新时间未生效

    问题描述: 新增一条case,create_time没有自动生成创建时间,值为空 原因 : create_time字段类型是DateTime(错误)而不是TIMESTAMP(正确)  解决办法: 把c ...

  3. 纯python自研接口自动化脚本更新版本,让小白也能实现0到1万+的接口自动化用例

    查看完整文章点击原文链接:纯python自研接口自动化脚本更新版本,让小白也能实现0到1万+的接口自动化用例 你是否还在用postman\jmeter做接口自动化吗?用python的开源框架[unit ...

  4. worker 启动时向 etcd 注册自己的信息,并设置一个带 TTL 的租约,每隔一段时间更新这个 TTL,如果该 worker 挂掉了,这个 TTL 就会 expire 并删除相应的 key。

    1.通过etcd中的选主机制,我们实现了服务的高可用.同时利用systemd对etcd本身进行了保活,只要etcd服务所在的机器没有宕机,进程就具备了容灾性. https://mp.weixin.qq ...

  5. 基于ABP落地领域驱动设计-05.实体创建和更新最佳实践

    目录 系列文章 数据传输对象 输入DTO最佳实践 不要在输入DTO中定义不使用的属性 不要重用输入DTO 输入DTO中验证逻辑 输出DTO最佳实践 对象映射 学习帮助 系列文章 基于ABP落地领域驱动 ...

  6. MongoDB学习笔记二:创建、更新及删除文档

    插入并保存文档 对目标集使用insert方法插入一个文档: > db.foo.insert({"bar" : "baz"}) 这个操作会给文档增加一个&q ...

  7. 三、MongoDB的创建、更新和删除

    一.MongoDB的下载.安装与部署 二.MongoDB的基础知识简介 三.MongoDB的创建.更新和删除 概要 下面开始学习MongoDB最重要也是最基础的部分:C(创建)R(查询)U(更新)D( ...

  8. Mark Russinovich 的博客:Windows Azure 主机更新:原因、时间和方式

     Mark Russinovich的技术博客涵盖 Windows故障排除.技术和安全等主题. Windows Azure主机更新:原因.时间和方式 Windows Azure的计算平台(其中包括 ...

  9. 如何屏蔽 iOS 软件自动更新,去除更新通知和标记

    适用于 iOS.iPadOS 和 watchOS,即 iPhone.iPad 和 Apple Watch 通用. 请访问原文链接:https://sysin.org/article/Disable-i ...

  10. MongoDB学习笔记-创建、更新、删除文档

    创建     MongoDB中使用insert方法来向集合插入文档,然后保存到MongoDB中.     db.foo.insert({"hehe":"呵呵"} ...

随机推荐

  1. HRM平台 - 组织结构的渲染

    组织结构是一个公司的灵魂 ,多使用树型结构 : 页面格式: 渲染头部 : 头部代码: <template> <el-row type="flex" justify ...

  2. CF1737D Ela and the Wiring Wizard

    CF1737D Ela and the Wiring Wizard 题意简述 形象化的,对于一个边,我们可以做以下变换: 将一条边变为自环 将边的一个端点沿着其他边移动 总的来说,就是边的两个端点可以 ...

  3. Unity 华为快游戏JS桥接 实现写日志等功能

    之前接入微信小游戏本身代码js桥接比较完善,抖音小游戏有缺少但也没缺的这么多,华为这边的API,大残啊!官方转换插件Github仓库上一次提交在3月份.(截至现在)API给的很简略,接入js代码那里说 ...

  4. 什么是 Nodejs

    这集来聊什么是 Nodejs ,看看 Node.js 是为了解决什么样的痛点而生的,为啥说它是一个 JS 的运行环境,以及 npm 是什么,为何能引发了 Web 开发的革命. Node.js 的诞生 ...

  5. CSS动画(毛玻璃按钮)

    1.整体效果 https://mmbiz.qpic.cn/sz_mmbiz_gif/EGZdlrTDJa4ofJ9W4ibgD5asQcBesp1f1CXVnrQmicnzqDPskBNEQC4ia0 ...

  6. 递推(C语言)

    文章目录 1.斐波那契数列 2.太波那契数列 3.二维递推问题 4.实战 4.1 力扣509 斐波那契数 4.2 力扣70 爬楼梯 4.3 力扣119 杨辉三角|| 递推最通俗的理解就是数列,递推和数 ...

  7. SSIS错误汇总

    问题一 [Excel 目标 [2]] 错误: SSIS 错误代码 DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER.对连接管理器"未匹配用 ...

  8. 2.7 使用LiveCD从光盘直接运行Linux,无需安装

    Linux 世界中一个相对较新的现象是可引导的 Linux CD 发行版的出现.它无需安装就可以看到 Linux 系统是什么样的. 多数现代 PC 都能从 CD 启动,而不是必须从标准硬盘启动.基于这 ...

  9. games101_Homework5

    使用光线追踪来渲染图像,实现两个部分:光线的生成和光线与三角的求交 你需要修改的函数是: • Renderer.cpp 中的 Render():这里你需要为每个像素生成一条对应的光 线,然后调用函数 ...

  10. RAG三件套运行的新选择 - GPUStack

    GPUStack 是一个开源的大模型即服务平台,可以高效整合并利用 Nvidia.Apple Metal.华为昇腾和摩尔线程等各种异构的 GPU/NPU 资源,提供本地私有部署大模型解决方案. GPU ...