Forráskód Böngészése

add a new fieldStrategy type,SQL will not be added under certain conditions

miemie 6 éve
szülő
commit
094d5be41e

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

@@ -39,5 +39,9 @@ public enum FieldStrategy {
      * <p>1. 在全局里代表 NOT_NULL</p>
      * <p>2. 在注解里代表 跟随全局</p>
      */
-    DEFAULT
+    DEFAULT,
+    /**
+     * 在对应情况下不再加入相应的条件
+     */
+    NEVER
 }

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

@@ -15,26 +15,20 @@
  */
 package com.baomidou.mybatisplus.core.metadata;
 
-import java.lang.reflect.Field;
-import java.util.Optional;
-
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.FieldStrategy;
-import com.baomidou.mybatisplus.annotation.SqlCondition;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.Version;
+import com.baomidou.mybatisplus.annotation.*;
 import com.baomidou.mybatisplus.core.config.GlobalConfig;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.TableInfoHelper;
 import com.baomidou.mybatisplus.core.toolkit.sql.SqlScriptUtils;
-
 import lombok.AccessLevel;
 import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.ToString;
 
+import java.lang.reflect.Field;
+import java.util.Optional;
+
 /**
  * 数据库表字段反射信息
  *
@@ -74,26 +68,29 @@ public class TableFieldInfo implements Constants {
     /**
      * 字段策略【 默认,自判断 null 】
      *
-     * @deprecated v_3.1.2 please use {@link #insertStrategy} and {@link #updateStrategy} and {@link #whereStrategy}
      * @since deprecated v_3.1.2 @2019-5-7
+     * @deprecated v_3.1.2 please use {@link #insertStrategy} and {@link #updateStrategy} and {@link #whereStrategy}
      */
     @Deprecated
     private final FieldStrategy fieldStrategy;
     /**
      * 字段验证策略之 insert
      * Refer to {@link TableField#insertStrategy()}
+     *
      * @since added v_3.1.2 @2019-5-7
      */
     private final FieldStrategy insertStrategy;
     /**
      * 字段验证策略之 update
      * Refer to {@link TableField#updateStrategy()}
+     *
      * @since added v_3.1.2 @2019-5-7
      */
     private final FieldStrategy updateStrategy;
     /**
      * 字段验证策略之 where
      * Refer to {@link TableField#whereStrategy()}
+     *
      * @since added v_3.1.2 @2019-5-7
      */
     private final FieldStrategy whereStrategy;
@@ -416,6 +413,9 @@ public class TableFieldInfo implements Constants {
      */
     private String convertIf(final String sqlScript, final String property, final FieldStrategy fieldStrategy) {
         final FieldStrategy targetStrategy = Optional.ofNullable(fieldStrategy).orElse(this.fieldStrategy);
+        if (targetStrategy == FieldStrategy.NEVER) {
+            return null;
+        }
         if (targetStrategy == FieldStrategy.IGNORED) {
             return sqlScript;
         }

+ 5 - 4
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/metadata/TableInfo.java

@@ -33,6 +33,7 @@ import org.apache.ibatis.session.Configuration;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
 import java.util.function.Predicate;
 
 import static java.util.stream.Collectors.joining;
@@ -256,7 +257,7 @@ public class TableInfo implements Constants {
     public String getAllInsertSqlPropertyMaybeIf(final String prefix) {
         final String newPrefix = prefix == null ? EMPTY : prefix;
         return getKeyInsertSqlProperty(newPrefix, true) + fieldList.stream()
-            .map(i -> i.getInsertSqlPropertyMaybeIf(newPrefix)).collect(joining(NEWLINE));
+            .map(i -> i.getInsertSqlPropertyMaybeIf(newPrefix)).filter(Objects::nonNull).collect(joining(NEWLINE));
     }
 
     /**
@@ -270,7 +271,7 @@ public class TableInfo implements Constants {
      */
     public String getAllInsertSqlColumnMaybeIf() {
         return getKeyInsertSqlColumn(true) + fieldList.stream().map(TableFieldInfo::getInsertSqlColumnMaybeIf)
-            .collect(joining(NEWLINE));
+            .filter(Objects::nonNull).collect(joining(NEWLINE));
     }
 
     /**
@@ -290,7 +291,7 @@ public class TableInfo implements Constants {
                 }
                 return true;
             })
-            .map(i -> i.getSqlWhere(newPrefix)).collect(joining(NEWLINE));
+            .map(i -> i.getSqlWhere(newPrefix)).filter(Objects::nonNull).collect(joining(NEWLINE));
         if (!withId || StringUtils.isEmpty(keyProperty)) {
             return filedSqlScript;
         }
@@ -315,7 +316,7 @@ public class TableInfo implements Constants {
                     return !(isLogicDelete() && i.isLogicDelete());
                 }
                 return true;
-            }).map(i -> i.getSqlSet(newPrefix)).collect(joining(NEWLINE));
+            }).map(i -> i.getSqlSet(newPrefix)).filter(Objects::nonNull).collect(joining(NEWLINE));
     }
 
     /**

+ 1 - 1
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/TableInfoHelper.java

@@ -141,7 +141,7 @@ public class TableInfoHelper {
         /* 初始化字段相关 */
         initTableFields(clazz, globalConfig, tableInfo);
 
-        tableInfo.initResultMapIfNeed();
+// todo 暂时不开放  tableInfo.initResultMapIfNeed();
 
         /* 放入缓存 */
         TABLE_INFO_CACHE.put(clazz, tableInfo);