Ver Fonte

优化自定义枚举数据库类型处理器实例初始化逻辑

Woody há 1 semana atrás
pai
commit
93c3e50ef6

+ 6 - 1
framework-database/src/main/java/com/chelvc/framework/database/interceptor/Tables.java

@@ -281,7 +281,12 @@ final class Tables {
             return null;
         } else if (clazz == EnumerationTypeHandler.class) {
             Type type = TypeParameterResolver.resolveFieldType(field.getField(), table.getEntityType());
-            return new EnumerationTypeHandler((Class<? extends Enumeration>) ObjectUtils.type2class(type));
+            Class<? extends Enumeration> target = (Class<? extends Enumeration>) ObjectUtils.type2class(type);
+            TypeHandler<?> handler = HANDLER_MAPPING.get(target);
+            if (handler == null) {
+                handler = HANDLER_MAPPING.computeIfAbsent(target, k -> new EnumerationTypeHandler(target));
+            }
+            return handler;
         }
         TypeHandler<?> handler = HANDLER_MAPPING.get(clazz);
         return handler != null ? handler : HANDLER_MAPPING.computeIfAbsent(clazz, k -> ObjectUtils.instance(clazz));