Browse Source

Merge pull request #3055 from GeorgeAnson/3.0

#3053 最新版本3.4.1 中使用到了非自包含的组件
miemieYaho 4 years ago
parent
commit
db9531785c

+ 40 - 0
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/StringUtils.java

@@ -527,4 +527,44 @@ public final class StringUtils {
         return buf.toString();
     }
 
+    /**
+     * <p>比较两个字符串,相同则返回true。字符串可为null</p>
+     *
+     * <p>对字符串大小写敏感</p>
+     *
+     * <pre>
+     * StringUtils.equals(null, null)   = true
+     * StringUtils.equals(null, "abc")  = false
+     * StringUtils.equals("abc", null)  = false
+     * StringUtils.equals("abc", "abc") = true
+     * StringUtils.equals("abc", "ABC") = false
+     * </pre>
+     *
+     * @param cs1  第一个字符串, 可为 {@code null}
+     * @param cs2  第二个字符串, 可为 {@code null}
+     * @return {@code true} 如果两个字符串相同, 或者都为 {@code null}
+     * @see Object#equals(Object)
+     */
+    public static boolean equals(final CharSequence cs1, final CharSequence cs2) {
+        if (cs1 == cs2) {
+            return true;
+        }
+        if (cs1 == null || cs2 == null) {
+            return false;
+        }
+        if (cs1.length() != cs2.length()) {
+            return false;
+        }
+        if (cs1 instanceof String && cs2 instanceof String) {
+            return cs1.equals(cs2);
+        }
+        // Step-wise comparison
+        final int length = cs1.length();
+        for (int i = 0; i < length; i++) {
+            if (cs1.charAt(i) != cs2.charAt(i)) {
+                return false;
+            }
+        }
+        return true;
+    }
 }

+ 12 - 0
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/test/toolkit/StringUtilsTest.java

@@ -61,4 +61,16 @@ class StringUtilsTest {
         assertThat(StringUtils.getTargetColumn("`order`")).isEqualTo("order");
         assertThat(StringUtils.getTargetColumn("'order'")).isEqualTo("order");
     }
+
+    /**
+     * 测试equals方法
+     */
+    @Test
+    void equal(){
+        assertTrue(StringUtils.equals(null, null));
+        Assertions.assertFalse(StringUtils.equals(null, "abc"));
+        Assertions.assertFalse(StringUtils.equals("abc", null));
+        assertTrue(StringUtils.equals("abc", "abc"));
+        Assertions.assertFalse(StringUtils.equals("abc", "ABC"));
+    }
 }

+ 1 - 1
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/plugins/inner/BlockAttackInnerInterceptor.java

@@ -20,6 +20,7 @@ import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
 import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper;
 import com.baomidou.mybatisplus.core.toolkit.Assert;
 import com.baomidou.mybatisplus.core.toolkit.PluginUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.parser.JsqlParserSupport;
 import net.sf.jsqlparser.expression.BinaryExpression;
 import net.sf.jsqlparser.expression.Expression;
@@ -30,7 +31,6 @@ import net.sf.jsqlparser.expression.operators.relational.EqualsTo;
 import net.sf.jsqlparser.expression.operators.relational.NotEqualsTo;
 import net.sf.jsqlparser.statement.delete.Delete;
 import net.sf.jsqlparser.statement.update.Update;
-import org.apache.commons.lang3.StringUtils;
 import org.apache.ibatis.executor.statement.StatementHandler;
 import org.apache.ibatis.mapping.BoundSql;
 import org.apache.ibatis.mapping.MappedStatement;