浏览代码

修正全局配置 FieldStrategy 为非默认值下,字段存在注解但未指定 FieldStrategy,全局配置失效的问题

miemie 6 年之前
父节点
当前提交
5a39641ed6

+ 7 - 1
mybatis-plus-annotation/src/main/java/com/baomidou/mybatisplus/annotation/FieldStrategy.java

@@ -35,5 +35,11 @@ public enum FieldStrategy {
     /**
      * 非空判断
      */
-    NOT_EMPTY
+    NOT_EMPTY,
+    /**
+     * 默认的
+     * 1. 在全局里代表 NOT_NULL
+     * 2. 在注解里代表 跟随全局
+     */
+    DEFAULT
 }

+ 3 - 7
mybatis-plus-annotation/src/main/java/com/baomidou/mybatisplus/annotation/TableField.java

@@ -15,11 +15,7 @@
  */
 package com.baomidou.mybatisplus.annotation;
 
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
+import java.lang.annotation.*;
 
 
 /**
@@ -93,10 +89,10 @@ public @interface TableField {
      * 字段验证策略
      * </p>
      * <p>
-     * 默认 非 null 判断
+     * 默认追随全局配置
      * </p>
      */
-    FieldStrategy strategy() default FieldStrategy.NOT_NULL;
+    FieldStrategy strategy() default FieldStrategy.DEFAULT;
 
     /**
      * <p>

+ 6 - 8
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/config/GlobalConfig.java

@@ -15,12 +15,6 @@
  */
 package com.baomidou.mybatisplus.core.config;
 
-import java.io.Serializable;
-import java.util.Set;
-import java.util.concurrent.ConcurrentSkipListSet;
-
-import org.apache.ibatis.session.SqlSessionFactory;
-
 import com.baomidou.mybatisplus.annotation.DbType;
 import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.IdType;
@@ -28,9 +22,13 @@ import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
 import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
 import com.baomidou.mybatisplus.core.injector.ISqlInjector;
 import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
-
 import lombok.Data;
 import lombok.experimental.Accessors;
+import org.apache.ibatis.session.SqlSessionFactory;
+
+import java.io.Serializable;
+import java.util.Set;
+import java.util.concurrent.ConcurrentSkipListSet;
 
 /**
  * <p>
@@ -140,6 +138,6 @@ public class GlobalConfig implements Serializable {
         /**
          * 字段验证策略
          */
-        private FieldStrategy fieldStrategy = FieldStrategy.NOT_NULL;
+        private FieldStrategy fieldStrategy = FieldStrategy.DEFAULT;
     }
 }

+ 3 - 3
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/metadata/TableFieldInfo.java

@@ -129,10 +129,10 @@ public class TableFieldInfo {
         /*
          * 优先使用单个字段注解,否则使用全局配置
          */
-        if (dbConfig.getFieldStrategy() != tableField.strategy()) {
-            this.fieldStrategy = tableField.strategy();
-        } else {
+        if (tableField.strategy() == FieldStrategy.DEFAULT) {
             this.fieldStrategy = dbConfig.getFieldStrategy();
+        } else {
+            this.fieldStrategy = tableField.strategy();
         }
 
         if (StringUtils.isNotEmpty(tableField.condition())) {