zoukankan      html  css  js  c++  java
  • Mybatisplus实现MetaObjectHandler接口自动更新创建时间更新时间

    踩坑:

        直接实现该接口,发现进入该类后的entity已经重新处理updateTime了,但是更新数据库的时候,却不带updateTime更新。

    原因:

        由于对该接口等认识不足导致。

    解决方案:

        实体类中需要添加注解:fill = FieldFill.INSERT_UPDATE

    代码:

    /**
      * 更新时间
      */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private Long updateTime;
    1. /**
       * 新增,更新时,自动更新字段
       */
      @Component
      public class MyMetaObjectHandler implements MetaObjectHandler {
       
          private static String CREATE_TIME = "createTime";
          private static String UPDATE_TIME = "updateTime";
       
          /**
           * 插入使用
           */
          @Override
          public void insertFill(MetaObject metaObject) {
              fillValue(metaObject, CREATE_TIME, () -> getDateValue(metaObject.getSetterType(CREATE_TIME)));
              fillValue(metaObject, UPDATE_TIME, () -> getDateValue(metaObject.getSetterType(UPDATE_TIME)));
          }
       
          @Override
          public void updateFill(MetaObject metaObject) {
              fillValue(metaObject, "et."+UPDATE_TIME, () -> getDateValue(metaObject.getSetterType("et."+UPDATE_TIME)));
          }
          private void fillValue(MetaObject metaObject, String fieldName, Supplier<Object> valueSupplier) {
              if (!metaObject.hasGetter(fieldName)) {
                  return;
              }
              Object sidObj = metaObject.getValue(fieldName);
              if (sidObj == null && metaObject.hasSetter(fieldName) && valueSupplier != null) {
                  setFieldValByName(fieldName, valueSupplier.get(), metaObject);
              }
          }
       
          private Object getDateValue(Class<?> setterType) {
              if (Date.class.equals(setterType)) {
                  return new Date();
              } else if (LocalDateTime.class.equals(setterType)) {
                  return LocalDateTime.now();
              } else if (Long.class.equals(setterType)){
                  return System.currentTimeMillis();
              }
              return null;
          }
      }
  • 相关阅读:
    无线传感网3-1.目标物的覆盖技术
    无线传感网2-传感器布局方法
    JAVA 第二周课程总结
    2019春总结作业
    第十二周作业
    第十一周作业
    第十周
    第九周作业
    第八周作业
    第七周作业
  • 原文地址:https://www.cnblogs.com/exmyth/p/14304803.html
Copyright © 2011-2022 走看看