mybatisplus字段注入MetaObjectHandler扫描不到我的指定填充字段

本文主要是介绍mybatisplus字段注入MetaObjectHandler扫描不到我的指定填充字段,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用mybatisplus自带的字段填充策略注入值的时候,发现并没有扫描到我的指定字段。

1. 初始代码


@Component
@Slf4j
public class MyMetaObjectHandler implements MetaObjectHandler {private static final String createByFiled = "createBy";private static final String updateByFiled = "updateBy";@Overridepublic void updateFill(MetaObject metaObject) {Object originalObject = metaObject.getOriginalObject();// 有这个属性 才执行if (metaObject.hasSetter("updateTime") ) {this.setUpdateFieldValByName( "updateTime", LocalDateTime.now(),metaObject);}boolean b = metaObject.hasGetter("updateBy");// 返回的是falseObject fieldValByName = getFieldValByName(updateByFiled, metaObject);if (b && fieldValByName == null){// 有这个属性 并且这个字段的属性为空 才执行this.setInsertFieldValByName(updateByFiled, value222, metaObject);}boolean hasField = this.hasField(metaObject, "update1234");//falseboolean hasField1 = this.hasField(metaObject, "updateBy");// true}/*** <p>@Description: 摘抄自   MetaObjectHandler.setFieldValByName() 方法</p >* <p>@param [metaObject, fieldName]</p >* <p>@return boolean</p >* <p>@throws </p >* <p>@date 2024/6/21 13:29</p >*/private boolean hasField(MetaObject metaObject, String fieldName) {if (metaObject.hasSetter(fieldName) && metaObject.hasGetter(fieldName)) {
//            metaObject.setValue(fieldName, fieldVal);return true;} else if (metaObject.hasGetter(Constants.ENTITY)) {Object et = metaObject.getValue(Constants.ENTITY);if (et != null) {MetaObject etMeta = SystemMetaObject.forObject(et);if (etMeta.hasSetter(fieldName)) {return true;}}}return false;}}

此时发现 updateFill()方法中的metaObject.hasGetter(“updateBy”)返回的结果竟然是false
在这里插入图片描述

此处发现metaObject.hasGetter(“”)这个字段不靠谱,而metaObject.hasSetter()这个更不靠谱,有时候(字段不存在的情况下)直接返回true。此处决定手写判断是否存在该字段如下

2.手写判断方法,可能是mp的版本问题

/*** <p>@Description: 摘抄自   MetaObjectHandler.setFieldValByName() 方法</p >* <p>@param [metaObject, fieldName]</p >* <p>@return boolean</p >* <p>@throws </p >* <p>@date 2024/6/21 13:29</p >*/private boolean hasField(MetaObject metaObject, String fieldName) {if (metaObject.hasSetter(fieldName) && metaObject.hasGetter(fieldName)) {
//            metaObject.setValue(fieldName, fieldVal);return true;} else if (metaObject.hasGetter(Constants.ENTITY)) {Object et = metaObject.getValue(Constants.ENTITY);if (et != null) {MetaObject etMeta = SystemMetaObject.forObject(et);if (etMeta.hasSetter(fieldName)) {return true;}}}return false;}

这篇关于mybatisplus字段注入MetaObjectHandler扫描不到我的指定填充字段的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1081728

相关文章

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos

python如何生成指定文件大小

《python如何生成指定文件大小》:本文主要介绍python如何生成指定文件大小的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python生成指定文件大小方法一(速度最快)方法二(中等速度)方法三(生成可读文本文件–较慢)方法四(使用内存映射高效生成