nieqiuqiu преди 6 години
родител
ревизия
6f0b2ac348

+ 3 - 2
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/conditions/AbstractLambdaWrapper.java

@@ -19,11 +19,12 @@ import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
 import com.baomidou.mybatisplus.core.toolkit.ExceptionUtils;
 import com.baomidou.mybatisplus.core.toolkit.LambdaUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringPool;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.support.ColumnCache;
 import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
 import com.baomidou.mybatisplus.core.toolkit.support.SerializedLambda;
 
+import org.apache.ibatis.reflection.property.PropertyNamer;
+
 import java.util.Arrays;
 import java.util.Optional;
 
@@ -78,7 +79,7 @@ public abstract class AbstractLambdaWrapper<T, Children extends AbstractLambdaWr
      * @see SerializedLambda#getImplMethodName()
      */
     private String getColumn(SerializedLambda lambda, boolean onlyColumn) throws MybatisPlusException {
-        String fieldName = StringUtils.resolveFieldName(lambda.getImplMethodName());
+        String fieldName = PropertyNamer.methodToProperty(lambda.getImplMethodName());
 
         return Optional.ofNullable(LambdaUtils.getColumnOfProperty(lambda.getImplClass(), fieldName))
             .map(onlyColumn ? ColumnCache::getColumn : ColumnCache::getColumnSelect)

+ 9 - 3
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/StringUtils.java

@@ -64,6 +64,11 @@ public class StringUtils {
      */
     private static final Pattern P_IS_COLUMN = Pattern.compile("^\\w\\S*[\\w\\d]*$");
 
+    /**
+     * 是否为大写命名
+     */
+    private static final Pattern CAPITAL_MODE = Pattern.compile("^[0-9A-Z/_]+$");
+
     private StringUtils() {
         // to do nothing
     }
@@ -131,8 +136,7 @@ public class StringUtils {
         if (str.contains(StringPool.UNDERSCORE)) {
             return false;
         }
-        char first = str.charAt(0);
-        return first < 'A' || first > 'Z';
+        return Character.isLowerCase(str.charAt(0));
     }
 
     /**
@@ -421,7 +425,7 @@ public class StringUtils {
      * @return ignore
      */
     public static boolean isCapitalMode(String word) {
-        return null != word && word.matches("^[0-9A-Z/_]+$");
+        return null != word && CAPITAL_MODE.matcher(word).matches();
     }
 
     /**
@@ -809,8 +813,10 @@ public class StringUtils {
      *
      * @param s 原字符串
      * @param p 移除的单词
+     * @deprecated 3.1.1
      * @return ignore
      */
+    @Deprecated
     public static String removeWordWithComma(String s, String p) {
         String match = "\\s*" + p + "\\s*,{0,1}";
         return s.replaceAll(match, "");

+ 3 - 1
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/core/toolkit/LambdaUtilsTest.java

@@ -18,6 +18,8 @@ package com.baomidou.mybatisplus.core.toolkit;
 import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
 import com.baomidou.mybatisplus.core.toolkit.support.SerializedLambda;
 import lombok.Getter;
+
+import org.apache.ibatis.reflection.property.PropertyNamer;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
@@ -28,7 +30,7 @@ class LambdaUtilsTest {
         SerializedLambda lambda = LambdaUtils.resolve(TestPojo::getId);
         Assertions.assertEquals(TestPojo.class.getName(), lambda.getImplClassName());
         Assertions.assertEquals("getId", lambda.getImplMethodName());
-        Assertions.assertEquals("id", StringUtils.resolveFieldName(lambda.getImplMethodName()));
+        Assertions.assertEquals("id", PropertyNamer.methodToProperty(lambda.getImplMethodName()));
 
         Cond<TestPojo> cond = new Cond<>();
         System.out.println(cond.eq(TestPojo::getId, 123).toString());

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

@@ -30,4 +30,12 @@ class StringUtilsTest {
         String s = "userId";
         Assertions.assertEquals("user_id", StringUtils.camelToUnderline(s));
     }
+
+    @Test
+    void isCapitalModeTest(){
+        Assertions.assertFalse(StringUtils.isCapitalMode("test"));
+        Assertions.assertFalse(StringUtils.isCapitalMode("Test"));
+        Assertions.assertFalse(StringUtils.isCapitalMode("teSt"));
+        Assertions.assertTrue(StringUtils.isCapitalMode("TEST"));
+    }
 }