소스 검색

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

Woody 1 주 전
부모
커밋
93c3e50ef6
1개의 변경된 파일6개의 추가작업 그리고 1개의 파일을 삭제
  1. 6 1
      framework-database/src/main/java/com/chelvc/framework/database/interceptor/Tables.java

+ 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));