miemie 7 lat temu
rodzic
commit
ceb5c8d356

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

@@ -256,7 +256,7 @@ public class TableFieldInfo {
         if (fieldFill == FieldFill.INSERT || fieldFill == FieldFill.INSERT_UPDATE) {
             return sqlScript;
         }
-        return SqlScriptUtils.convertIf(sqlScript, property, isCharSequence, fieldStrategy);
+        return convertIf(sqlScript, property);
     }
 
     /**
@@ -271,7 +271,7 @@ public class TableFieldInfo {
         if (fieldFill == FieldFill.INSERT || fieldFill == FieldFill.INSERT_UPDATE) {
             return sqlScript;
         }
-        return SqlScriptUtils.convertIf(sqlScript, property, isCharSequence, fieldStrategy);
+        return convertIf(sqlScript, property);
     }
 
     /**
@@ -294,6 +294,23 @@ public class TableFieldInfo {
             // 不进行 if 包裹
             return sqlSet;
         }
-        return SqlScriptUtils.convertIf(sqlSet, prefix + property, isCharSequence, fieldStrategy);
+        return convertIf(sqlSet, prefix + property);
+    }
+
+    /**
+     * 转换成 if 标签的脚本片段
+     *
+     * @param sqlScript sql 脚本片段
+     * @param property  字段名
+     * @return if 脚本片段
+     */
+    private String convertIf(String sqlScript, String property) {
+        if (fieldStrategy == FieldStrategy.IGNORED) {
+            return sqlScript;
+        }
+        if (fieldStrategy == FieldStrategy.NOT_EMPTY && isCharSequence) {
+            return SqlScriptUtils.convertIf(sqlScript, String.format("%s != null and %s != ''", property, property));
+        }
+        return SqlScriptUtils.convertIf(sqlScript, String.format("%s != null", property));
     }
 }

+ 3 - 13
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/sql/SqlScriptUtils.java

@@ -15,7 +15,6 @@
  */
 package com.baomidou.mybatisplus.core.toolkit.sql;
 
-import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 
@@ -43,20 +42,11 @@ public final class SqlScriptUtils {
      * 获取 带 if 标签的脚本
      * </p>
      *
-     * @param sqlScript      sql 脚本片段
-     * @param property       entity 属性
-     * @param isCharSequence 是 CharSequence 类型否
-     * @param fieldStrategy  验证逻辑
+     * @param sqlScript sql 脚本片段
      * @return if 脚本
      */
-    public static String convertIf(String sqlScript, String property, boolean isCharSequence, FieldStrategy fieldStrategy) {
-        if (fieldStrategy == FieldStrategy.IGNORED) {
-            return sqlScript;
-        }
-        if (fieldStrategy == FieldStrategy.NOT_EMPTY && isCharSequence) {
-            return String.format("<if test=\"%s != null and %s != ''\">%s</if>", property, property, sqlScript);
-        }
-        return String.format("<if test=\"%s != null\">%s</if>", property, sqlScript);
+    public static String convertIf(String sqlScript, String testInValue) {
+        return String.format("<if test=\"%s\">%s</if>", testInValue, sqlScript);
     }
 
     /**