返回顶部
首页 > 资讯 > 精选 >MyBatisPlus自动化填充的坑怎么解决
  • 917
分享到

MyBatisPlus自动化填充的坑怎么解决

2023-07-05 19:07:09 917人浏览 泡泡鱼
摘要

本篇内容主要讲解“mybatisPlus自动化填充的坑怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MyBatisPlus自动化填充的坑怎么解决”吧!问题再现在开发的过程中,使用了MyB

本篇内容主要讲解“mybatisPlus自动化填充的坑怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MyBatisPlus自动化填充的坑怎么解决”吧!

问题再现

开发的过程中,使用了MyBatis-Plus开发插件,根据表信息自动生成了表的实体类,然后又根据MyBatis-Plus的官方文档,添加了注解及自定义实现类,然后发现运行起来时间数据没有插入。

情况如下图所示:

MyBatisPlus自动化填充的坑怎么解决

MyBatisPlus自动化填充的坑怎么解决

MyBatisPlus自动化填充的坑怎么解决

问题分析与源码原理分析

分析打印的sql日志,发现更新时已经添加update_time字段,故排除实体类的注解问题。

转而分析MyMetaObjectHandler自定义实现类,经过对比发现,它其中使用的LocalDateTime类型,而使用插件生成则会把Mysql数据库里DateTime类型自动生成为Date类型。

猜测问题就是时间类型不一样导致。然后打断点进入MyMetaObjectHandler方法,对MyBatis-Plus源码进行分析:

(1)实际填充方法如下

    default MetaObjectHandler strictFill(boolean insertFill, TableInfo tableInfo, MetaObject metaObject, List<StrictFill<?, ?>> strictFills) {        if (insertFill && tableInfo.isWithInsertFill() || !insertFill && tableInfo.isWithUpdateFill()) {            strictFills.forEach((i) -> {                String fieldName = i.getFieldName();                Class<?> fieldType = i.getFieldType();                tableInfo.getFieldList().stream().filter((j) -> {                    return j.getProperty().equals(fieldName) && fieldType.equals(j.getPropertyType()) && (insertFill && j.isWithInsertFill() || !insertFill && j.isWithUpdateFill());                }).findFirst().ifPresent((j) -> {                    this.strictFillStrategy(metaObject, fieldName, i.getFieldVal());                });            });        }        return this;    }

(2)定位匹配规则代码

return j.getProperty().equals(fieldName) && fieldType.equals(j.getPropertyType()) && (insertFill && j.isWithInsertFill() || !insertFill && j.isWithUpdateFill());

可以将其拆分成三部分,分别是

//判断MyMetaObjectHandler中名称是否和更新数据的名称相同j.getProperty().equals(fieldName)//判断自MyMetaObjectHandler中类型是否和更新数据的类型相同fieldType.equals(j.getPropertyType())//判断字段insert及update填充的符合情况(insertFill && j.isWithInsertFill() || !insertFill && j.isWithUpdateFill())

(3)计算器参数对比

MyBatisPlus自动化填充的坑怎么解决

在此就能发现问题,propertyType中的值为class java.util.Date,而fieldType中的值为class java.time.LocalDateTime,类型不匹配导致填充失败。

问题解决方法

将自动生成实体类的时间类型改成了LocalDateTime,问题便得到了解决。

MyBatisPlus自动化填充的坑怎么解决

MyBatisPlus自动化填充的坑怎么解决

到此,相信大家对“MyBatisPlus自动化填充的坑怎么解决”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: MyBatisPlus自动化填充的坑怎么解决

本文链接: https://lsjlt.com/news/354563.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MyBatisPlus自动化填充的坑怎么解决
    本篇内容主要讲解“MyBatisPlus自动化填充的坑怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MyBatisPlus自动化填充的坑怎么解决”吧!问题再现在开发的过程中,使用了MyB...
    99+
    2023-07-05
  • mybatisPlus自动填充更新时间的示例代码
    1.实体类上的注解 @NoArgsConstructor @AllArgsConstructor @Data public class User { @TableId(...
    99+
    2024-04-02
  • java中resultset不能自动填充怎么解决
    在Java中,ResultSet对象默认是不支持自动填充的。如果你想要自动填充ResultSet对象,可以使用第三方库或者自定义方法...
    99+
    2023-10-25
    java
  • mybatisplus的坑怎么解决
    这篇文章主要讲解了“mybatisplus的坑怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mybatisplus的坑怎么解决”吧!mybatisplus的坑 insert标签ins...
    99+
    2023-06-21
  • 怎么解决谷歌浏览器自动填充问题
    这篇文章主要介绍了怎么解决谷歌浏览器自动填充问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在谷歌浏览器中,登陆成功后,谷歌浏览器会提示是否记住密码。如果选择记住密码,那么...
    99+
    2023-06-08
  • MybatisPlus 插入或更新数据时自动填充更新数据解决方案
    目录解决方案1、 实体类 2、拦截器MetaObjectHandler 3、测试参考文章Maven <parent> <group...
    99+
    2024-04-02
  • Mybatis-plus自动填充不生效或自动填充数据为null原因及解决方案
    目录问题一:自动填充的数据为null问题二:使用mybatis-plus的乐观锁后发现自动填充的updateTime字段不自动填充了小结昨天使用mybatis-plus。使用自动填充...
    99+
    2024-04-02
  • html5怎么自动填充父类框
    本篇内容介绍了“html5怎么自动填充父类框”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!   小米布局...
    99+
    2024-04-02
  • MybatisPlus+Postgresql整合的坑怎么解决
    本篇内容主要讲解“MybatisPlus+Postgresql整合的坑怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MybatisPlus+Postgresql整合的坑怎么解决”吧!基础...
    99+
    2023-07-05
  • Mybatis-Plus@TableField自动填充时间为null的问题解决
    最近做的一个项目中用到了mybatis-plus的自动填充 主要服务于数据库表中的创建时间字段以及最后修改时间字段 期望效果是在执行添加或更新操作时自动填充相应时间 但是发现执行操作...
    99+
    2023-01-11
    Mybatis-Plus @TableField自动填充时间 Mybatis-Plus 自动填充时间
  • MyBatis+MyBatisPlus中遇到的坑怎么解决
    这篇文章主要介绍了MyBatis+MyBatisPlus中遇到的坑怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MyBatis+MyBatisPlus中遇到的坑怎么解决文章都会有所收获,下面我们一起来看...
    99+
    2023-07-05
  • mybatisplus自动生成器解析(及遇到的坑)
    目录mybatisplus自动生成器解析1.加入依赖2.写一个类,作为自动生成器的入口3.修改代码3.运行讲解一下mybatisplus代码生成器使用及注意事项1.添加maven依赖...
    99+
    2024-04-02
  • python自动填充网页功能怎么实现
    要实现Python自动填充网页的功能,可以使用第三方库selenium来模拟浏览器操作。下面是一个示例代码,演示了如何使用selen...
    99+
    2023-08-24
    python
  • android怎么实现自动填充短信验证码
    要实现自动填充短信验证码,你可以使用以下步骤:1. 获取收到的短信:在Android中,你可以使用`SmsRetriever` AP...
    99+
    2023-09-05
    android
  • 浏览器input自动填充淡黄色背景如何解决
    今天小编给大家分享一下浏览器input自动填充淡黄色背景如何解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我...
    99+
    2024-04-02
  • Java中怎么自动填充SQL语句的公共字段
    本篇文章为大家展示了Java中怎么自动填充SQL语句的公共字段,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。比如下面这些:1、使用对比接下来我们就使用对比的方式,来...
    99+
    2024-04-02
  • vue怎么自定义密码输入框解决浏览器自动填充密码问题
    这篇文章主要讲解了“vue怎么自定义密码输入框解决浏览器自动填充密码问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue怎么自定义密码输入框解决浏览器自动填充密码问题”吧!问题描述浏览器...
    99+
    2023-07-06
  • Mybatis-Plus怎么使用@TableField实现自动填充日期
    本文小编为大家详细介绍“Mybatis-Plus怎么使用@TableField实现自动填充日期”,内容详细,步骤清晰,细节处理妥当,希望这篇“Mybatis-Plus怎么使用@TableField实现自动填充日期”文章能帮助大家解决疑惑,下...
    99+
    2023-06-30
  • MyBatis-Plus中自动填充功能的用法示例详解
    目录前言一、添加@TableField注解二、编写MyMetaObjectHandler三、对自动填充进行测试四、运行效果图总结前言 有些时候我们可能会有这样的需求,插入或者更新数据...
    99+
    2022-12-10
    MyBatis-Plus自动填充 MyBatis-Plus自动填充功能
  • 怎么用ajax+php实现搜索框自动填充功能
    这篇文章主要讲解了“怎么用ajax+php实现搜索框自动填充功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用ajax+php实现搜索框自动填充功能”...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作