ソースを参照

修复StringUtils#guessGetterName错误.

https://github.com/baomidou/mybatis-plus/issues/1918
nieqiuqiu 5 年 前
コミット
654ab2311e

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

@@ -146,10 +146,7 @@ public final class StringUtils {
      * @return 返回猜测的名称
      */
     public static String guessGetterName(String name, Class<?> type) {
-        if (ClassUtils.isBoolean(type)) {
-            return name.startsWith("is") ? name : "is" + upperFirst(name);
-        }
-        return "get" + upperFirst(name);
+        return boolean.class == type ? name.startsWith("is") ? name : "is" + upperFirst(name) : "get" + upperFirst(name);
     }
 
     /**

+ 13 - 0
mybatis-plus-core/src/test/java/com/baomidou/mybatisplus/core/toolkit/ReflectionKitTest.java

@@ -78,6 +78,19 @@ class ReflectionKitTest {
         Assertions.assertEquals(fieldMap.get("name"), A.class.getDeclaredField("name"));
     }
 
+    @Test
+    void testGetMethodCapitalize() throws NoSuchFieldException {
+        Field field = C.class.getDeclaredField("sex");
+        String getMethod = ReflectionKit.getMethodCapitalize(field, "sex");
+        Assertions.assertEquals("getSex", getMethod);
+        field = A.class.getDeclaredField("testWrap");
+        getMethod = ReflectionKit.getMethodCapitalize(field, "testWrap");
+        Assertions.assertEquals("getTestWrap", getMethod);
+        field = A.class.getDeclaredField("testSimple");
+        getMethod = ReflectionKit.getMethodCapitalize(field, "testSimple");
+        Assertions.assertEquals("isTestSimple", getMethod);
+    }
+
     @Test
     void testGetMethodValue() {
         C c = new C();

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

@@ -38,4 +38,14 @@ class StringUtilsTest {
         Assertions.assertFalse(StringUtils.isCapitalMode("teSt"));
         Assertions.assertTrue(StringUtils.isCapitalMode("TEST"));
     }
+
+    @Test
+    void testGuessGetterName(){
+        Assertions.assertEquals("getSex",StringUtils.guessGetterName("sex",String.class));
+        Assertions.assertEquals("getIsSex",StringUtils.guessGetterName("isSex",String.class));
+        Assertions.assertEquals("getTestWrap",StringUtils.guessGetterName("testWrap",Boolean.class));
+        Assertions.assertEquals("getIsTestWrap",StringUtils.guessGetterName("isTestWrap",Boolean.class));
+        Assertions.assertEquals("isTestSimple",StringUtils.guessGetterName("testSimple",boolean.class));
+        Assertions.assertEquals("isTestSimple",StringUtils.guessGetterName("isTestSimple",boolean.class));
+    }
 }