Browse Source

调整填充设置

jobob 8 years ago
parent
commit
f4fa59d787

+ 4 - 4
src/main/java/com/baomidou/mybatisplus/enums/FieldFill.java

@@ -24,10 +24,10 @@ package com.baomidou.mybatisplus.enums;
  * @Date 2017-06-27
  */
 public enum FieldFill {
-    DEFAULT(0, "默认方式"),
-    INSERT(1, "忽略插入"),
-    UPDATE(2, "忽略更新"),
-    INSERT_UPDATE(3, "忽略插入和更新");
+    DEFAULT(0, "默认不处理"),
+    INSERT(1, "插入填充字段"),
+    UPDATE(2, "更新填充字段"),
+    INSERT_UPDATE(3, "插入和更新填充字段");
 
     /**
      * 主键

+ 19 - 11
src/main/java/com/baomidou/mybatisplus/mapper/MetaObjectHandler.java

@@ -62,18 +62,10 @@ public abstract class MetaObjectHandler {
      * @param metaObject meta object parameter
      */
     public MetaObjectHandler setFieldValByName(String fieldName, Object fieldVal, MetaObject metaObject) {
-        String[] fieldNames = metaObject.getGetterNames();
-        boolean containsEt = false;
-        for (String name : fieldNames) {
-            if (META_OBJ_PREFIX.equals(name)) {
-                containsEt = true;
-                break;
-            }
-        }
-        if (containsEt) {
-            metaObject.setValue(META_OBJ_PREFIX + "." + fieldName, fieldVal);
-        } else {
+        if(metaObject.hasGetter(fieldName)) {
             metaObject.setValue(fieldName, fieldVal);
+        } else if (this.hasGetter(fieldName, metaObject)) {
+            metaObject.setValue(META_OBJ_PREFIX + "." + fieldName, fieldVal);
         }
         return this;
     }
@@ -106,6 +98,22 @@ public abstract class MetaObjectHandler {
         }
     }
 
+    /**
+     * <p>
+     * 是否存在属性,判断 et 别名方法
+     * </p>
+     *
+     * @param fieldName  java bean property name
+     * @param metaObject parameter wrapper
+     * @return
+     */
+    public boolean hasGetter(String fieldName, MetaObject metaObject) {
+        if (metaObject.hasGetter(fieldName)) {
+            return true;
+        }
+        return metaObject.hasGetter(META_OBJ_PREFIX + "." + fieldName);
+    }
+
     /**
      * 开启插入填充
      */

+ 1 - 4
src/test/java/com/baomidou/mybatisplus/test/h2/H2MetaObjectHandler.java

@@ -52,10 +52,7 @@ public class H2MetaObjectHandler extends MetaObjectHandler {
         System.out.println("*************************");
         System.out.println("update fill");
         System.out.println("*************************");
-        String fillField = "lastUpdatedDt";
-        if(metaObject.hasGetter(fillField)) {
-            metaObject.setValue(fillField, new Timestamp(System.currentTimeMillis()));
-        }
+        this.setFieldValByName("lastUpdatedDt", new Timestamp(System.currentTimeMillis()), metaObject);
     }
 }
 

+ 1 - 0
src/test/java/com/baomidou/mybatisplus/test/h2/H2MetaObjectHandlerTest.java

@@ -26,6 +26,7 @@ import com.baomidou.mybatisplus.test.h2.entity.persistent.H2UserMetaObj;
 
 /**
  * <p>
+ * 测试元对象填充器
  * </p>
  *
  * @author yuxiaobin