ソースを参照

修改DbType获取.

nieqiuqiu 5 年 前
コミット
fac9445f36

+ 13 - 8
mybatis-plus-annotation/src/main/java/com/baomidou/mybatisplus/annotation/DbType.java

@@ -18,6 +18,9 @@ package com.baomidou.mybatisplus.annotation;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
 /**
  * MybatisPlus 数据库类型
  *
@@ -94,18 +97,20 @@ public enum DbType {
      */
     private String dialect;
 
+    private static Map<String,DbType> DB_CACHE_MAP = new ConcurrentHashMap<>();
+
+    static {
+        for (DbType dbType : DbType.values()) {
+            DB_CACHE_MAP.put(dbType.getDb().toLowerCase(), dbType);
+        }
+    }
+
     /**
-     * 获取数据库类型(默认 MySql)
+     * 获取数据库类型
      *
      * @param dbType 数据库类型字符串
      */
     public static DbType getDbType(String dbType) {
-        DbType[] dts = DbType.values();
-        for (DbType dt : dts) {
-            if (dt.getDb().equalsIgnoreCase(dbType)) {
-                return dt;
-            }
-        }
-        return OTHER;
+        return DB_CACHE_MAP.getOrDefault(dbType.toLowerCase(), OTHER);
     }
 }

+ 6 - 9
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/metadata/TableInfoHelper.java

@@ -442,15 +442,12 @@ public class TableInfoHelper {
      */
     public static List<Field> getAllFields(Class<?> clazz) {
         List<Field> fieldList = ReflectionKit.getFieldList(ClassUtils.getUserClass(clazz));
-        if (CollectionUtils.isNotEmpty(fieldList)) {
-            return fieldList.stream()
-                .filter(i -> {
-                    /* 过滤注解非表字段属性 */
-                    TableField tableField = i.getAnnotation(TableField.class);
-                    return (tableField == null || tableField.exist());
-                }).collect(toList());
-        }
-        return fieldList;
+        return fieldList.stream()
+            .filter(field -> {
+                /* 过滤注解非表字段属性 */
+                TableField tableField = field.getAnnotation(TableField.class);
+                return (tableField == null || tableField.exist());
+            }).collect(toList());
     }
 
     /**

+ 8 - 0
mybatis-plus/src/test/java/com/baomidou/mybatisplus/test/DbTypeTest.java

@@ -55,4 +55,12 @@ class DbTypeTest {
             Assertions.assertEquals(aClass, DIALECT_MAP.get(dbType));
         }
     }
+
+    @Test
+    void testGetDbType() {
+        Assertions.assertEquals(DbType.MYSQL, DbType.getDbType("mysql"));
+        Assertions.assertEquals(DbType.MYSQL, DbType.getDbType("Mysql"));
+        Assertions.assertEquals(DbType.OTHER, DbType.getDbType("other"));
+        Assertions.assertEquals(DbType.OTHER, DbType.getDbType("unknown"));
+    }
 }