From 80fa4e96c037cb37b5d250e2ece8bd94955d39a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=B7=E6=98=9F?= <807255403@qq.com> Date: Sat, 29 Mar 2025 14:54:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9MybatisPlus=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=A1=AB=E5=85=85=E9=85=8D=E7=BD=AE=EF=BC=9A1=E3=80=81fix?= =?UTF-8?q?=EF=BC=9A=E5=AD=97=E6=AE=B5=E6=9C=AA=E8=AE=BE=E7=BD=AE@TableFie?= =?UTF-8?q?ld(fill=20=3D=20FieldFill.INSERT)=E6=B3=A8=E8=A7=A3=E4=B9=9F?= =?UTF-8?q?=E4=BC=9A=E8=A2=AB=E5=A1=AB=E5=85=85=E9=BB=98=E8=AE=A4=E5=80=BC?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=9B2=E3=80=81fix:=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=A1=AB=E5=85=85=E6=97=B6=E6=9C=AA=E6=A0=B9=E6=8D=AE@TableFie?= =?UTF-8?q?ld=E5=B1=9E=E6=80=A7fill=E5=88=A4=E6=96=AD=E6=98=AF=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=97=B6=E5=A1=AB=E5=85=85=E8=BF=98=E6=98=AF=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=97=B6=E5=A1=AB=E5=85=85=E9=97=AE=E9=A2=98=EF=BC=9B?= =?UTF-8?q?3=E3=80=81=E4=BC=98=E5=8C=96=EF=BC=9A=E5=80=BC=E8=A6=86?= =?UTF-8?q?=E7=9B=96=E4=B8=8E=E5=90=A6=EF=BC=8C=E4=B8=8D=E5=86=8D=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E6=8C=87=E5=AE=9A=E5=B1=9E=E6=80=A7=E6=98=AF=E5=90=A6?= =?UTF-8?q?=E6=9C=89=E5=80=BC=EF=BC=8C=E5=9B=A0=E4=B8=BA=E8=AF=A5=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E6=B2=A1=E6=9C=89=E5=AE=9E=E9=99=85=E4=BD=9C=E7=94=A8?= =?UTF-8?q?=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/MybatisPlusMetaObjectHandler.java | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/pig-common/pig-common-mybatis/src/main/java/com/pig4cloud/pig/common/mybatis/config/MybatisPlusMetaObjectHandler.java b/pig-common/pig-common-mybatis/src/main/java/com/pig4cloud/pig/common/mybatis/config/MybatisPlusMetaObjectHandler.java index 67b0f7cf..1e044da3 100644 --- a/pig-common/pig-common-mybatis/src/main/java/com/pig4cloud/pig/common/mybatis/config/MybatisPlusMetaObjectHandler.java +++ b/pig-common/pig-common-mybatis/src/main/java/com/pig4cloud/pig/common/mybatis/config/MybatisPlusMetaObjectHandler.java @@ -1,7 +1,7 @@ package com.pig4cloud.pig.common.mybatis.config; -import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import com.baomidou.mybatisplus.core.metadata.TableInfo; import com.pig4cloud.pig.common.core.constant.CommonConstants; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.reflection.MetaObject; @@ -10,7 +10,6 @@ import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.util.ClassUtils; -import java.nio.charset.Charset; import java.time.LocalDateTime; import java.util.Optional; @@ -27,20 +26,20 @@ public class MybatisPlusMetaObjectHandler implements MetaObjectHandler { log.debug("mybatis plus start insert fill ...."); LocalDateTime now = LocalDateTime.now(); - fillValIfNullByName("createTime", now, metaObject, true); - fillValIfNullByName("updateTime", now, metaObject, true); - fillValIfNullByName("createBy", getUserName(), metaObject, true); - fillValIfNullByName("updateBy", getUserName(), metaObject, true); + fillValIfNullByName("createTime", now, metaObject, true, true); + fillValIfNullByName("updateTime", now, metaObject, true, true); + fillValIfNullByName("createBy", getUserName(), metaObject, true, true); + fillValIfNullByName("updateBy", getUserName(), metaObject, true, true); // 删除标记自动填充 - fillValIfNullByName("delFlag", CommonConstants.STATUS_NORMAL, metaObject, true); + fillValIfNullByName("delFlag", CommonConstants.STATUS_NORMAL, metaObject, true, true); } @Override public void updateFill(MetaObject metaObject) { log.debug("mybatis plus start update fill ...."); - fillValIfNullByName("updateTime", LocalDateTime.now(), metaObject, true); - fillValIfNullByName("updateBy", getUserName(), metaObject, true); + fillValIfNullByName("updateTime", LocalDateTime.now(), metaObject, true, false); + fillValIfNullByName("updateBy", getUserName(), metaObject, true, false); } /** @@ -50,7 +49,7 @@ public class MybatisPlusMetaObjectHandler implements MetaObjectHandler { * @param metaObject MetaObject * @param isCover 是否覆盖原有值,避免更新操作手动入参 */ - private static void fillValIfNullByName(String fieldName, Object fieldVal, MetaObject metaObject, boolean isCover) { + private void fillValIfNullByName(String fieldName, Object fieldVal, MetaObject metaObject, boolean isCover, boolean insertFill) { // 0. 如果填充值为空 if (fieldVal == null) { return; @@ -61,15 +60,18 @@ public class MybatisPlusMetaObjectHandler implements MetaObjectHandler { return; } // 2. 如果用户有手动设置的值 - Object userSetValue = metaObject.getValue(fieldName); - String setValueStr = StrUtil.str(userSetValue, Charset.defaultCharset()); - if (StrUtil.isNotBlank(setValueStr) && !isCover) { + if (!isCover) { return; } // 3. field 类型相同时设置 Class getterType = metaObject.getGetterType(fieldName); if (ClassUtils.isAssignableValue(getterType, fieldVal)) { - metaObject.setValue(fieldName, fieldVal); + TableInfo tableInfo = findTableInfo(metaObject); + if (tableInfo.getFieldList().stream().anyMatch((i) -> i.getProperty().equals(fieldName) + && getterType.equals(i.getPropertyType()) + && (insertFill && i.isWithInsertFill() || !insertFill && i.isWithUpdateFill()))) { + metaObject.setValue(fieldName, fieldVal); + } } } -- Gitee