Browse Source

日常优化,SqlFormatter类设置为过时,预计2个版本后删除

miemie 6 years ago
parent
commit
5a60ce721d

+ 13 - 3
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/AbstractWrapper.java

@@ -22,7 +22,9 @@ import com.baomidou.mybatisplus.core.conditions.interfaces.Nested;
 import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments;
 import com.baomidou.mybatisplus.core.conditions.segments.NormalSegmentList;
 import com.baomidou.mybatisplus.core.enums.SqlKeyword;
+import com.baomidou.mybatisplus.core.enums.SqlLike;
 import com.baomidou.mybatisplus.core.toolkit.*;
+import com.baomidou.mybatisplus.core.toolkit.sql.SqlUtils;
 
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -159,7 +161,7 @@ public abstract class AbstractWrapper<T, R, Children extends AbstractWrapper<T,
 
     @Override
     public Children like(boolean condition, R column, Object val) {
-        return doIt(condition, () -> columnToString(column), LIKE, () -> formatSql("{0}", StringPool.PERCENT + val + StringPool.PERCENT));
+        return likeValue(condition, column, val, SqlLike.DEFAULT);
     }
 
     @Override
@@ -169,12 +171,12 @@ public abstract class AbstractWrapper<T, R, Children extends AbstractWrapper<T,
 
     @Override
     public Children likeLeft(boolean condition, R column, Object val) {
-        return doIt(condition, () -> columnToString(column), LIKE, () -> formatSql("{0}", StringPool.PERCENT + val));
+        return likeValue(condition, column, val, SqlLike.LEFT);
     }
 
     @Override
     public Children likeRight(boolean condition, R column, Object val) {
-        return doIt(condition, () -> columnToString(column), LIKE, () -> formatSql("{0}", val + StringPool.PERCENT));
+        return likeValue(condition, column, val, SqlLike.RIGHT);
     }
 
     @Override
@@ -302,6 +304,14 @@ public abstract class AbstractWrapper<T, R, Children extends AbstractWrapper<T,
         return doIt(condition, AND);
     }
 
+    /**
+     * 内部自用
+     * <p>拼接 LIKE 以及 值</p>
+     */
+    protected Children likeValue(boolean condition, R column, Object val, SqlLike sqlLike) {
+        return doIt(condition, () -> columnToString(column), LIKE, () -> formatSql("{0}", SqlUtils.concatLike(val, sqlLike)));
+    }
+
     /**
      * 普通查询条件
      *

+ 6 - 34
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/enums/SqlLike.java

@@ -23,43 +23,15 @@ package com.baomidou.mybatisplus.core.enums;
  */
 public enum SqlLike {
     /**
-     * LEFT
+     * %值
      */
-    LEFT("left", "左边%"),
+    LEFT,
     /**
-     * RIGHT
+     * 值%
      */
-    RIGHT("right", "右边%"),
+    RIGHT,
     /**
-     * CUSTOM
+     * %值%
      */
-    CUSTOM("custom", "定制"),
-    /**
-     * DEFAULT
-     */
-    DEFAULT("default", "两边%");
-
-    /**
-     * 主键
-     */
-    private final String type;
-
-    /**
-     * 描述
-     */
-    private final String desc;
-
-    SqlLike(final String type, final String desc) {
-        this.type = type;
-        this.desc = desc;
-    }
-
-    public String getType() {
-        return type;
-    }
-
-    public String getDesc() {
-        return desc;
-    }
-
+    DEFAULT
 }

+ 1 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/sql/SqlFormatter.java

@@ -31,6 +31,7 @@ import java.util.*;
  * @author Gavin King
  * @author Steve Ebersole
  */
+@Deprecated
 public class SqlFormatter {
 
     private static final String WHITESPACE = " \n\r\f\t";

+ 6 - 28
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/sql/SqlUtils.java

@@ -17,7 +17,6 @@ package com.baomidou.mybatisplus.core.toolkit.sql;
 
 import com.baomidou.mybatisplus.annotation.DbType;
 import com.baomidou.mybatisplus.core.enums.SqlLike;
-import com.baomidou.mybatisplus.core.toolkit.Assert;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 
@@ -34,11 +33,8 @@ public class SqlUtils {
 
     /**
      * 格式sql
-     *
-     * @param boundSql
-     * @param format
-     * @return
      */
+    @Deprecated
     public static String sqlFormat(String boundSql, boolean format) {
         if (format) {
             try {
@@ -53,24 +49,17 @@ public class SqlUtils {
      * 用%连接like
      *
      * @param str 原字符串
-     * @return
+     * @return like 的值
      */
-    public static String concatLike(String str, SqlLike type) {
-        StringBuilder builder = new StringBuilder(str.length() + 3);
+    public static String concatLike(Object str, SqlLike type) {
         switch (type) {
             case LEFT:
-                builder.append(StringPool.PERCENT).append(str);
-                break;
+                return StringPool.PERCENT + str;
             case RIGHT:
-                builder.append(str).append(StringPool.PERCENT);
-                break;
-            case CUSTOM:
-                builder.append(str);
-                break;
+                return str + StringPool.PERCENT;
             default:
-                builder.append(StringPool.PERCENT).append(str).append(StringPool.PERCENT);
+                return StringPool.PERCENT + str + StringPool.PERCENT;
         }
-        return builder.toString();
     }
 
     /**
@@ -93,15 +82,4 @@ public class SqlUtils {
         }
         return val;
     }
-
-    /**
-     * SQL注入内容剥离
-     *
-     * @param sql 待处理 SQL 内容
-     * @return this
-     */
-    public static String stripSqlInjection(String sql) {
-        Assert.notNull(sql, "strip sql is null.");
-        return sql.replaceAll("('.+--)|(--)|(\\|)|(%7C)", StringPool.EMPTY);
-    }
 }