From 7807d6be80abb1a0c1cf9736432f8a9d88e653a9 Mon Sep 17 00:00:00 2001 From: MichaelWin Date: Fri, 26 Dec 2025 23:58:36 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E4=BF=AE=E5=A4=8D=E3=80=91=E5=85=BC?= =?UTF-8?q?=E5=AE=B9LocalDateTime=E4=BB=A5=E5=8F=8Adate?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/corewing/app/entity/ParamsCenter.java | 2 +- .../app/handler/CustomMetaObjectHandler.java | 42 +++++++++++++++---- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/corewing/app/entity/ParamsCenter.java b/src/main/java/com/corewing/app/entity/ParamsCenter.java index 8788e31..cfb2fa8 100644 --- a/src/main/java/com/corewing/app/entity/ParamsCenter.java +++ b/src/main/java/com/corewing/app/entity/ParamsCenter.java @@ -94,6 +94,6 @@ public class ParamsCenter implements Serializable { /** * 更新时间 */ - @TableField(fill = FieldFill.INSERT_UPDATE) + @TableField(fill = FieldFill.UPDATE) private LocalDateTime updateTime; } diff --git a/src/main/java/com/corewing/app/handler/CustomMetaObjectHandler.java b/src/main/java/com/corewing/app/handler/CustomMetaObjectHandler.java index 3925b2a..f40ae33 100644 --- a/src/main/java/com/corewing/app/handler/CustomMetaObjectHandler.java +++ b/src/main/java/com/corewing/app/handler/CustomMetaObjectHandler.java @@ -15,7 +15,7 @@ import java.util.Date; /** * MyBatis-Plus 自动填充处理器 - * 用于自动填充创建时间和更新时间 + * 兼容 Date 和 LocalDateTime 两种时间类型的自动填充 */ @Component public class CustomMetaObjectHandler implements MetaObjectHandler { @@ -44,6 +44,7 @@ public class CustomMetaObjectHandler implements MetaObjectHandler { setFieldValByName(DELETE_FLAG, EnumUtil.toString(CommonDeleteFlagEnum.NOT_DELETE), metaObject); } } catch (ReflectionException ignored) { } + try { //为空则设置createUser Object createUser = metaObject.getValue(CREATE_USER); @@ -51,12 +52,10 @@ public class CustomMetaObjectHandler implements MetaObjectHandler { setFieldValByName(CREATE_USER, this.getUserId(), metaObject); } } catch (ReflectionException ignored) { } + try { - //为空则设置createTime - Object createTime = metaObject.getValue(CREATE_TIME); - if (ObjectUtil.isNull(createTime)) { - setFieldValByName(CREATE_TIME, DateTime.now(), metaObject); - } + // 兼容 Date 和 LocalDateTime 类型的 createTime 填充 + fillTimeField(metaObject, CREATE_TIME); } catch (ReflectionException ignored) { } } @@ -67,13 +66,38 @@ public class CustomMetaObjectHandler implements MetaObjectHandler { setFieldValByName(UPDATE_USER, this.getUserId(), metaObject); } catch (ReflectionException ignored) { } + try { - //设置updateTime - setFieldValByName(UPDATE_TIME, DateTime.now(), metaObject); + // 兼容 Date 和 LocalDateTime 类型的 updateTime 填充 + fillTimeField(metaObject, UPDATE_TIME); } catch (ReflectionException ignored) { } } + /** + * 统一填充时间字段(自动识别 Date/LocalDateTime 类型) + * @param metaObject 元对象 + * @param fieldName 时间字段名(createTime/updateTime) + */ + private void fillTimeField(MetaObject metaObject, String fieldName) { + // 先判断字段是否为空 + Object fieldValue = metaObject.getValue(fieldName); + if (ObjectUtil.isNotNull(fieldValue)) { + return; // 字段已有值,不填充 + } + + // 获取字段的类型,自动匹配填充值类型 + Class fieldType = metaObject.getGetterType(fieldName); + if (fieldType == LocalDateTime.class) { + // 字段是 LocalDateTime 类型 + setFieldValByName(fieldName, LocalDateTime.now(), metaObject); + } else if (fieldType == Date.class || fieldType == DateTime.class) { + // 字段是 Date/hutool DateTime 类型 + setFieldValByName(fieldName, new Date(), metaObject); + } + // 其他类型不处理(避免填充错误) + } + /** * 获取用户id */ @@ -89,4 +113,4 @@ public class CustomMetaObjectHandler implements MetaObjectHandler { return "-1"; } } -} +} \ No newline at end of file