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万+

AS7262六通道可见光传感器:从光谱原理到物联网色彩检测实战

光谱检测是嵌入式感知领域的关键技术,其核心原理是通过特定波长的滤光片分离光线并转换为电信号,从而实现对环境光或物体反射光的成分分析。这项技术的价值在于将复杂的光学分析简化为可编程读取的数字信号,极大降低了色彩检测在物联网和智能设备中的应用门槛。在智能农业、工业分拣、环境监测等场景中,精确的光谱数据能够驱动自动化决策,例如评估植物光照条件或识别物料颜色。本文以Adafruit AS7262传感器为例,深入解析其基于硅干涉滤光片的六通道设计,并通过Arduino与Python实战,演示如何快速构建从数据采集到可

weixin_28738173的博客 595

树莓派安装snowboy

1、树莓派换源 参考链接:https://blog.youkuaiyun.com/qq_43556844/article/details/113615915 2、更新pip3 参考链接:https://blog.youkuaiyun.com/qq_43556844/article/details/113616214 3、存取麦克风 我们使用PortAudio作为音频输入/输出的跨平台支持。我们还使用sox作为快速实用程序来检查麦克风设置是否正确。 sudo apt-get install python-pyaudio python

qq_43556844的博客 1922

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

历年CSP-J(NOIP普及组)考点分析与分类汇总(纯干货)

noip/csp-j历年真题考点分类

weixin_42358969的博客 1万+

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

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

weixin_35750747的博客 851

Cursor生成JAVA相关的关键词提示规则

你是 Java 编程、Spring Boot、Spring Framework、Maven、JUnit 及相关 Java 技术的专家。在项目根目录创建一个.curstorrules文件(注意有个小数点),之后在该文件内填入下面内容。始终遵循 SOLID 原则,保持高内聚低耦合的 Spring Boot 应用设计。Java 和 Spring Boot 使用规范。Spring Boot 具体规范。

kitonGao的博客 2114

基恩士PLC编程避坑指南:局部变量@前缀的3个隐藏陷阱与实战解决方案

本文深入剖析了基恩士PLC编程中使用@前缀创建局部变量的三大隐藏陷阱,包括在线调试时的数据丢失、数据类型冲突以及子程序复用时的地址覆盖问题。针对每个陷阱,提供了预定义变量、强类型规范和基址参数传递等实战解决方案,帮助中高级工程师提升代码健壮性与可维护性。

weixin_29171087的博客 101

MybatisPlus自动填充字段

MybatisPlus自动填充字段

m0_51935008的博客 182

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】5.2 数据分组与透视(CUBE/ROLLUP/GROUPING SETS)

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】5.2 数据分组与透视(CUBE/ROLLUP/GROUPING SETS)

kngines 1833

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

采样率转化代码C++(有理倍数,升采样、降采样均可)

【代码】采样率转化(有理倍数,升采样、降采样均可)

goudahai的专栏 545

第4章 部署负载均衡 Keepalived + HAProxy

本章在所有 Master 节点部署 Keepalived + HAProxy,为 kube-apiserver 提供高可用入口。Keepalived 实现 VIP(192.168.3.59)漂移,HAProxy 轮询转发请求至三个 Master 的 6443 端口(监听 6444 避免冲突)。健康检查脚本连续 5 次失败则停止 Keepalived,触发 VIP 自动切换。本章还包含配置详解、日常运维和问题排查。

幸福街--linux技术分享 120

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

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

yangguangdeqi的博客 1381

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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

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

348

WINCC7.3破解文件

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

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

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

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

weixin_43424751的博客 1472

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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、付费专栏及课程。

余额充值