Ver código fonte

反射获取字段信息支持首字母大写的字段

miemie 6 anos atrás
pai
commit
727a463148

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

@@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
 import com.baomidou.mybatisplus.core.toolkit.support.SerializedLambda;
 
+import java.util.Locale;
 import java.util.Map;
 import java.util.Optional;
 
@@ -56,7 +57,7 @@ public abstract class AbstractLambdaWrapper<T, This extends AbstractLambdaWrappe
     }
 
     private String getColumn(SerializedLambda lambda) {
-        String fieldName = StringUtils.resolveFieldName(lambda.getImplMethodName());
+        String fieldName = StringUtils.resolveFieldName(lambda.getImplMethodName()).toUpperCase(Locale.ENGLISH);
         if (!initColumnMap || !columnMap.containsKey(fieldName)) {
             String entityClassName = lambda.getImplClassName();
             columnMap = LambdaUtils.getColumnMap(entityClassName);

+ 12 - 5
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/LambdaUtils.java

@@ -27,6 +27,8 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.concurrent.ConcurrentHashMap;
 
+import static java.util.Locale.ENGLISH;
+
 /**
  * <p>
  * Lambda 解析工具类
@@ -99,17 +101,22 @@ public final class LambdaUtils {
      */
     private static Map<String, String> createLambdaMap(TableInfo tableInfo, Class clazz) {
         Map<String, String> map = new HashMap<>();
-        if (StringUtils.isNotEmpty(tableInfo.getKeyProperty())) {
+        String keyProperty = tableInfo.getKeyProperty();
+        if (StringUtils.isNotEmpty(keyProperty)) {
+            keyProperty = keyProperty.toUpperCase(ENGLISH);
+            String keyColumn = tableInfo.getKeyColumn();
             if (tableInfo.getClazz() != clazz) {
-                saveCache(tableInfo.getClazz().getName(), tableInfo.getKeyProperty(), tableInfo.getKeyColumn());
+                saveCache(tableInfo.getClazz().getName(), keyProperty, keyColumn);
             }
-            map.put(tableInfo.getKeyProperty(), tableInfo.getKeyColumn());
+            map.put(keyProperty, keyColumn);
         }
         tableInfo.getFieldList().forEach(i -> {
+            String property = i.getProperty().toUpperCase(ENGLISH);
+            String column = i.getColumn();
             if (i.getClazz() != clazz) {
-                saveCache(i.getClazz().getName(), i.getProperty(), i.getColumn());
+                saveCache(i.getClazz().getName(), property, column);
             }
-            map.put(i.getProperty(), i.getColumn());
+            map.put(property, column);
         });
         return map;
     }

+ 7 - 7
mybatis-plus-extension/src/main/java/com/baomidou/mybatisplus/extension/kotlin/AbstractKtWrapper.kt

@@ -17,15 +17,13 @@ package com.baomidou.mybatisplus.extension.kotlin
 
 import com.baomidou.mybatisplus.core.conditions.AbstractWrapper
 import com.baomidou.mybatisplus.core.toolkit.LambdaUtils
+import java.util.*
 import kotlin.reflect.KProperty
 
 /**
- *
- *
  * Lambda 语法使用 Wrapper
  * 统一处理解析 lambda 获取 column
  *
- *
  * @author yangyuhan
  * @since 2018-11-07
  */
@@ -33,10 +31,12 @@ abstract class AbstractKtWrapper<T, This : AbstractKtWrapper<T, This>> : Abstrac
 
     private var columnMap: Map<String, String>? = null
 
+    override fun initEntityClass() {
+        super.initEntityClass()
+        columnMap = LambdaUtils.getColumnMap(this.entityClass.name)
+    }
+
     override fun columnToString(kProperty: KProperty<*>): String? {
-        if (columnMap == null) {
-            columnMap = LambdaUtils.getColumnMap(this.entityClass.name)
-        }
-        return columnMap?.get(kProperty.name)
+        return columnMap?.get(kProperty.name.toUpperCase(Locale.ENGLISH))
     }
 }