踩坑:

直接实现该接口,发现进入该类后的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. 2024年4月中国数据库排行榜:OceanBase再度登顶,KingBase稳步上升进前五

    春风劲吹,迎来了2024年4月中国流行度排行榜.纵观本月榜单,各家数据库产品你追我赶,名次呈现微妙变动,它们正以不可忽视的力量,推动着中国乃至全球的数据管理革新.在这春意盎然的四月,让我们继续关注这些 ...

  2. 如何实现高效运维?来谈谈性能优化那些事(含直播回顾 Q&A)

    数据库性能问题,常常是困扰DBA高效运维的难题之一.如何多角度地帮助DBA,找到"数据库慢"的原因,保证系统高效.稳定.安全地运行? 2021年10月14日,云和恩墨技术顾问,拥有 ...

  3. 009 Pycharm的使用(各种骚操作和快捷键)

    博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...

  4. day05-JDK的卸载与安装

    JDK卸载 右键我的电脑--属性--高级系统设置--环境变量,找到JAVA_HOME安装目录,删除Java安装目录 删除JAVA_HOME 删除path下关于java的目录 cmd查看Java -ve ...

  5. c++时间管理大师

    作者花了一个下午写出来的. c++写的时间管理大师. 支持一下. #include<bits/stdc++.h> #include<windows.h> using names ...

  6. 什么是APP原生开发

    什么是APP原生开发?原生App实际上是一种基于智能手机本地操作系统如Android.IOS并且使用原生程序编写运行的第三方移动应用程序.开发原生App软件需要针对不同智能手机的操作系统来选择不同的A ...

  7. AI For Everyone_Week_1 By Andrew NG 课程英文

    AI For Everyone__Week__1 By Andrew NG 1 Introduction Welcome to AI for everyone. AI is changing the ...

  8. buck电路 & boost电路

    buck电路 buck电路是直流的降压电路,我们下面给大家讲下,如何把12V的直流电压降压成5V的直流电压 1.buck电路拓扑:12V----->5V 2.降压原理 a.开关闭合,电流走向 电 ...

  9. 《JVM第6课》本地方法栈

    1 什么是本地方法 首先要知道什么是本地方法,本地方法并不是 JVM 自己的方法,也不是 jre 里面的方法,而是指那些操作系统自己的方法(如C/C++方法),它们在操作系统目录里.可以这么理解,本地 ...

  10. WPS Excel中配置下拉多选(VBA)

    网上找到两种方案,一种利用数据选择其他单元格,也就是在其他单元格建数据.需求是模板,不合适 这里我用的VBA,踩了挺多坑,详细说下 首先更新WPS为最新版,确保可用VBA和JSA 确定使用VBA还是J ...