MybatisPlus - updateTime自动填充失败

SpringBoot+MyBatis-Plus+MySQL数据访问层超详细实战指南 在Java企业级应用开发中,ORM框架是连接业务逻辑与数据库的关键技术层,它通过对象关系映射简化了数据持久化操作。其核心原理是将Java对象与数据库表进行映射,开发者可以面向对象编程,框架则负责生成和执行SQL语句。这种技术显著提升了开发效率,降低了数据库操作的复杂度,是现代Web应用快速迭代的基石。MyBatis-Plus作为MyBatis的增强工具,在保留原生SQL灵活性的基础上,通过强大的CRUD接口、Lambda表达式支持和丰富的功能插件,进一步提升了开发效率与代码质量。结合SpringBoot的自 阅读详情

@TableFIled

  • 在字段上使用注解@TableFIled
public class User {
    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;

    /**
     * 修改时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime updateTime;
}

fill属性

public enum FieldFill {
    /**
     * 默认不处理
     */
    DEFAULT,
    /**
     * 插入填充字段
     */
    INSERT,
    /**
     * 更新填充字段
     */
    UPDATE,
    /**
     * 插入和更新填充字段
     */
    INSERT_UPDATE
}

自定义实现类

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        this.strictInsertFill(metaObject, "createTime", LocalDateTime::now, LocalDateTime.class);
        this.strictInsertFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.strictUpdateFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class);
    }
}

问题

  • 在使用更新数据时,使用this.strictUpdateFill(metaObject, “updateTime”, LocalDateTime::now, LocalDateTime.class),数据库updata_time字段无法更新成功

原因

  • 官方文档给出注意事项:
    • MetaObjectHandler提供的默认方法的策略均为: 如果属性有值则不覆盖, 如果填充值为null则不填充

因为我在插入数据时updateTime字段使用了自动填充,新增后数据库是含有值的,
在对数据进行操作的时候是先通过selectById()方法进行查询,所以在修改这条数据时无法对updateTime进行更新操作。

总结

  • 如果我们是先去在表中查出对象,再去更改,则更新时间失败

解决

1、 可以通过setUpdateTime(null)解决
2、使用 this.setFieldValByName(“updateTime”, LocalDateTime.now(), metaObject);

Spring Boot整合MyBatis-Plus:从配置到实战,提升开发效率 在Java后端开发中,ORM框架是连接应用与数据库的核心组件,它通过对象关系映射简化了数据操作。MyBatis作为一款流行的半自动化ORM框架,提供了灵活的SQL编写能力,但其XML配置和重复的CRUD代码常带来开发负担。MyBatis-Plus作为MyBatis的增强工具,在保留MyBatis所有特性的基础上,通过内置通用Mapper、条件构造器、分页插件等核心机制,实现了单表CRUD操作的零SQL编写,显著提升了开发效率与代码规范性。其技术价值在于遵循“约定大于配置”的原则,与Spring Boot的自 阅读详情

相关推荐

SpringBoot整合MyBatis-Plus实战:从配置到高级功能详解

在Java企业级应用开发中,ORM框架是连接对象模型与关系数据库的核心组件,其核心原理是通过元数据映射将Java对象与数据库表进行关联,实现数据的持久化操作。MyBatis作为一款优秀的半自动化ORM框架,通过XML或注解配置SQL语句,在灵活性与性能之间取得了良好平衡。而MyBatis-Plus在其基础上进行了深度增强,通过提供通用的CRUD操作、强大的条件构造器以及丰富的插件体系,极大地提升了开发效率与代码质量。其技术价值在于遵循“约定大于配置”的原则,减少了大量样板代码的编写,同时保持了MyBatis

weixin_30791095的博客 374

@TableField(value = “create_time“, fill= FieldFill.INSERT)不起作用

这个原因是我们还需要实现一个 MetaObjectHandle接口,并重写其中的方法。

Byron__的博客 2271

JDK 17与Spring Boot 3环境下MyBatis-Plus整合实战与进阶配置

在Java企业级应用开发中,ORM框架是连接应用与数据库的核心组件,它通过对象关系映射原理,将数据库表结构映射为Java对象,从而简化数据持久层操作,提升开发效率。MyBatis-Plus作为MyBatis的增强工具,在保留原生MyBatis灵活性的基础上,通过内置通用Mapper、分页插件等功能,进一步降低了CRUD操作的复杂度,其技术价值在于显著减少样板代码,并支持快速构建数据访问层。在实际应用场景中,尤其是在微服务架构下,开发者常需将其与最新的技术栈集成,例如使用JDK 17的现代语言特性和Sprin

weixin_30721077的博客 458

MyBatis-Plus自动填充功能失效导致的原因及解决

MyBatis-Plus自动填充功能失效导致的原因及解决

qq_36516841的博客 1万+

SpringBoot与MyBatis-Plus整合实战:从零构建高效数据层开发

在Java企业级应用开发中,ORM(对象关系映射)框架是连接应用与数据库的核心组件,其原理是通过将数据库表映射为Java对象,简化数据操作。MyBatis作为一款半自动化的ORM框架,在灵活性与性能之间取得了良好平衡,而MyBatis-Plus在其基础上提供了强大的增强功能,进一步提升了开发效率。这一技术组合的核心价值在于通过自动化CRUD操作、智能代码生成和内置分页插件等特性,将开发者从重复性工作中解放出来,使其更专注于复杂业务逻辑的实现。在实际应用场景中,无论是快速构建原型还是开发高并发生产系统,Spr

weixin_30735745的博客 368

SpringBoot+MyBatis-Plus实战:从零构建社区网格化管理平台

在Java Web开发领域,SpringBoot作为一款主流的微服务框架,以其“约定大于配置”的理念,极大地简化了企业级应用的初始搭建和开发过程。其核心原理是通过自动配置和起步依赖,快速整合Spring生态中的各种组件,让开发者能够专注于业务逻辑的实现。这一技术价值在于显著提升了开发效率,降低了项目维护成本,使得构建可独立运行、生产就绪的应用程序变得异常便捷。在实际应用场景中,SpringBoot常与MyBatis-Plus等持久层框架结合,用于开发需要高效数据操作和清晰架构的中后台管理系统,例如社区网格化

weixin_33739523的博客 392

Mybatis-Plus自动装填配置

Mybatis-Plus自动填充覆盖更新问题

youxiaxiaomage的博客 1545

Mybatisplus实现MetaObjectHandler接口填充创建更新时间

/** 创建时间 / @TableField(value = “CREATE_TIME”, fill = FieldFill.INSERT) @DateTimeFormat(pattern=“yyyy-MM-dd HH:mm:ss”) private Date createTime; /* 创建账号 / @TableField(value = “CREATE_USER”, fill = FieldFill.INSERT) private String createUser; /* 更新时间 / @Tabl

qq_35911118的博客 1189

MyBatis-Plus公共字段自动填充无效排查

目录 前言 MetaObjectHandler配置 entity字段注解 复现 原因 如何解决 但有疑问 前言 公司系统,mybatis-plus(v3.1.0)配置了MetaObjectHandler公共字段自动填充,一直以来都使用良好。昨天发现了个BUG——某些service方法更新时,不会自动填充edit_time,遂排查。 先说问题说在:XXService....

Canon 1万+

oracle ebs form 10g安装教程

这个窗口需要想想,你要安装的类型,不要盲目点击“下一步”,因为一旦Oracle安装后,重新安装之前,需要卸载Oracle干净才能重新安装,有时还会出现错误。到了该窗口后,需要耐心等待安装,安装到一大半后,自动弹出一个窗口,让我们选择Oracle安装第2部分磁盘的路径,继续安装,然后坐等安装结束。自定义安装Oracle根目录,点击“下一步”按钮后,耐心等待几秒钟,工具自动加载产品列表,加载完后,自动跳转到“选择安装类型”窗口。注:等待几秒钟后,关闭dos窗口,不必惊慌,自动调转到安装界面。

XIELIUHAI001的博客 473

保姆级教程:用OSSH免费版+FreeRADIUS+FreeAC NAC,从零搭建一套企业级无线Portal认证系统

本文提供了一套基于OSSH免费版、FreeRADIUS和FreeAC NAC的企业级无线Portal认证系统搭建教程。从环境规划、核心组件安装到认证策略与用户管理,详细介绍了如何利用开源工具构建高效、安全的认证体系,特别适用于预算有限但需求严格的企业场景。

weixin_27032989的博客 391

MybatisPlus更新删除操作时 updateTime自动填充无效

记录一下一个MybatisPlus的bug 使用MybatisPlus的自动填充功能失效的可能原因有很多,例如配置问题: public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { log.info("start insert fill ...."); this.strict

Jinondo's Blog 4600

深度篇——图像处理的一些方法(一) 关于 图像处理的三个层次 与 selective search

返回主目录 返回 图像处理的一些方法 目录 下一章:深度篇——图像处理的一些方法(二)细说性能评估 IOU和 GIOU 目录内容 深度篇——图像处理的一些方法(一)关于图像处理的三个层次 与 selective search 深度篇——图像处理的一些方法(二)细说性能评估 IOU和 GIOU 深度篇——图像处理的一些方法(三)细说 HOG特征与bag-o...

天下所弃,不过其纪。世间事,在人,在志。 2916

mybatisplus自动填充创建时间于TTS任务表中

在TTS任务系统中,利用MyBatis-Plus的字段自动填充机制,统一管理create_time和update_time,避免手动赋值导致的空值和时间混乱问题。通过注解与处理器结合,实现数据写入时的时间自动注入,提升数据完整性与运维效率,同时支持后续的统计分析与性能优化。

weixin_35750747的博客 851

SAP成本控制范围配置全流程:从货币参数到标准层次(附2024最新SPRO路径)

本文详细拆解了SAP成本控制范围(Controlling Area)的完整配置流程,涵盖从货币与估价参数文件定义、参数文件分配到控制范围,再到成本中心标准层次创建等核心步骤。文章提供了2024年最新的SPRO导航路径和实战配置要点,帮助顾问构建稳健、可扩展的管理会计基础架构,并附有常见问题排查指南。

java5的博客 938

Unity 2022打包Android APK:手把手教你创建和配置第一个签名Keystore(避坑指南)

本文详细介绍了Unity 2022打包Android APK时创建和配置签名Keystore的全流程,包括环境准备、Keystore创建、高级配置避坑指南以及签名验证与故障排查。特别强调了Android应用签名的重要性及安全维护策略,帮助开发者避免常见错误,确保应用顺利发布。

weixin_27379781的博客 241

MybatisPlus自动填充字段

MybatisPlus自动填充字段

m0_51935008的博客 182

(6)NUC980 SPI Nand 启动

方式一:下载到SPI-NAND-Flash中,这种方式可以将程序固化到SPIflash中,可以掉电保存。第二种方式下载到DDR中程序掉电丢失,但是DDR调试方便,时候调试的时候使用。之前的设置都是基于SD卡启动,今天测试一下是用SPI flash启动。方式二: 下载到DDR中,①设置为USB启动②下载到DDR中③运行。1:烧写BootLoader。

卤煮小鱼的博客 1750

MyBatis-Plus属性值自动填充功能失效

1. 问题描述 使用IService的update(Wrapper<T> updateWrapper)方法时,我自己的项目中属性值updateTime值填充失败 public interface IService { /** * 根据 UpdateWrapper 条件,更新记录 需要设置sqlset * * @param updateWrapper 实体对象封装操作类 {@link com.baomidou.mybatisplus.core.condit

qq_34188455的博客 5223

24. 在QML界面中嵌入QWidget窗口

目前QT官方主推的界面开发方式是采用QML进行界面设计,但在QML未流行之前,很多的项目都是采用QWidget开发的,把之前的代码全部转换为QML代码显然工作量非常大,如果能将QWidget窗口嵌入到QML界面中,那么开发效率将提高很多,且QML无法实现的功能也能借助于QWidget框架进行实现。

山间点烟雨 5921

AIGC算法工程师面试八股文深度解析与进阶指南:揭秘Diffusion Models核心原理与实战技巧

总结来说,Cosine Noise Scheduler 的核心优势在于它能够更巧妙地平衡信号和噪声的比例,在扩散过程的早期阶段更长时间地保留原始图像的细节信息,从而为去噪模型提供一个更友好的学习环境,最终带来更优异的生成质量。🚀

FJN110的博客 343

mybatis plus fill = fieldfill.insert 没生效,createTime、updateTime插入和更新

mybatis plus createTime、updateTime插入和更新,fill = fieldfill.insert 没生效,需要如下配置类。

yangguangdeqi的博客 1381

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

MyBatis-Plus自动填充公共字段:告别重复代码,提升开发效率

在数据持久化开发中,公共字段(如创建时间、创建人、更新时间、更新人)的管理是常见的工程需求。其核心原理是通过拦截数据操作生命周期,在SQL执行前自动注入预设值,从而将业务代码与基础设施逻辑解耦。这项技术的价值在于提升代码复用性、保证数据规范性,并减少因手动遗漏导致的数据不一致问题。它广泛应用于后台管理系统、电商平台等需要审计追溯和数据一致性保障的场景。本文以MyBatis-Plus的MetaObjectHandler为核心,结合ThreadLocal实现用户上下文传递,详细解析如何通过注解驱动的方式,实现公

348

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

MyBatis-Plus 乐观锁以及与自动注入失效的相关问题

乐观锁是与并发控制有关的一种概念,乐观锁假设数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测。 乐观锁实现方式: 取出记录时,获取当前 version 更新时,带上这个version 执行更新时, set version = newVersion where version = oldVersion 如果version不对,就更新失败 首先我们给数据库中增加version字段,然后再在实体类中添加注解 @Version //乐观锁Version注解 privat

weixin_43424751的博客 1472

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Springboot串讲

springboot快速工作指南

勇往直前的博客 1046

myBatis +myBatis Plus

第一步:创建maven工程第二部:创建实体类和dao的接口user.java文件:实现Serializable接口?定义属性生成get、set、toStringIuserDao.java 接口实现方法 List serlect();第三步:创建Mybatis的主配置文件SqlMapConifg.xml文件</</</</</</</第四步:创建映射配置文件IUserDao.xml文件</</环境搭建的注意事项:实现自动提交事务(不好)

sjdjh19920910的博客 200
上一篇: JDK8 - LocalDateTime(反)序列化异常
下一篇: com.netflix.client.ClientException: Load balancer does not have available server for client: XXX-XXX
hanlin-hl
博客等级 码龄8年 3粉丝 35原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hanlin-hl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值