miemie 7 years ago
parent
commit
55aa342ca9

+ 7 - 12
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/TableInfoHelper.java

@@ -425,22 +425,17 @@ public class TableInfoHelper {
      * @return related
      */
     public static boolean checkRelated(boolean underCamel, String property, String column) {
-        boolean existEscape = false;
         if (StringUtils.isNotColumnName(column)) {
-            // 首尾有转义符,手动在注解里设置了转义符
+            // 首尾有转义符,手动在注解里设置了转义符,去除掉转义符
             column = column.substring(1, column.length() - 1);
-            existEscape = true;
         }
-        if (underCamel) {
-            if (existEscape && property.toLowerCase().equals(property)) {
-                // 注解里手动加了转义符,而且字段全是小写,判断 property 与 column 转小写后是否相同
-                return !property.equals(column.toLowerCase());
-            }
-            // 开启了驼峰并且没有注解里手动加转义符,判断 property 下划线后是否与 column 相同 (全部转为小写)
-            return !StringUtils.camelToUnderline(property).equals(column.toLowerCase());
+        if (underCamel && column.contains(StringPool.UNDERSCORE)) {
+            // 开启了驼峰并且 column 包含下划线
+            return !property.toUpperCase(Locale.ENGLISH).equals(
+                column.replace(StringPool.UNDERSCORE, StringPool.EMPTY).toUpperCase(Locale.ENGLISH));
         } else {
-            // 未开启驼峰或者手动设置了转义符,直接判断 property 是否与 column 相同
-            return !property.equals(column);
+            // 未开启驼峰,直接判断 property 是否与 column 相同(全大写)
+            return !property.toUpperCase(Locale.ENGLISH).equals(column.toUpperCase(Locale.ENGLISH));
         }
     }
 

+ 10 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/SampleTest.java

@@ -2,8 +2,11 @@ package com.baomidou.mybatisplus.test;
 
 import com.baomidou.mybatisplus.core.metadata.TableInfo;
 import com.baomidou.mybatisplus.core.toolkit.TableInfoHelper;
+import com.baomidou.mybatisplus.test.base.entity.CommonData;
 import com.baomidou.mybatisplus.test.base.entity.CommonLogicData;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.ibatis.reflection.DefaultReflectorFactory;
+import org.apache.ibatis.reflection.MetaClass;
 import org.junit.Test;
 
 public class SampleTest {
@@ -23,4 +26,11 @@ public class SampleTest {
         System.out.println("----------- AllSqlWhere -----------");
         System.out.println(info.getAllSqlWhere(false, true, "ew.entity."));
     }
+
+    @Test
+    public void testTableInfoHelper3() {
+        MetaClass metaClass = MetaClass.forClass(CommonData.class, new DefaultReflectorFactory());
+        String property = metaClass.findProperty("TESTINT", true);
+        System.out.println(property);
+    }
 }