diff --git a/src/main/java/org/apache/ibatis/type/TypeHandlerRegistry.java b/src/main/java/org/apache/ibatis/type/TypeHandlerRegistry.java index 853a5fa97cf..805663b21ba 100644 --- a/src/main/java/org/apache/ibatis/type/TypeHandlerRegistry.java +++ b/src/main/java/org/apache/ibatis/type/TypeHandlerRegistry.java @@ -54,7 +54,7 @@ */ public final class TypeHandlerRegistry { - private final Map> jdbcTypeHandlerMap = new EnumMap<>(JdbcType.class); + private final Map> jdbcTypeHandlerMap = new EnumMap<>(JdbcType.class); private final Map>> typeHandlerMap = new ConcurrentHashMap<>(); private final TypeHandler unknownTypeHandler; private final Map, TypeHandler> allTypeHandlersMap = new HashMap<>(); @@ -252,10 +252,10 @@ private TypeHandler getTypeHandler(Type type, JdbcType jdbcType) { private Map> getJdbcHandlerMap(Type type) { Map> jdbcHandlerMap = typeHandlerMap.get(type); - if (NULL_TYPE_HANDLER_MAP.equals(jdbcHandlerMap)) { - return null; + if (jdbcHandlerMap != null) { + return NULL_TYPE_HANDLER_MAP.equals(jdbcHandlerMap) ? null : jdbcHandlerMap; } - if (jdbcHandlerMap == null && type instanceof Class) { + if (type instanceof Class) { Class clazz = (Class) type; if (Enum.class.isAssignableFrom(clazz)) { Class enumClass = clazz.isAnonymousClass() ? clazz.getSuperclass() : clazz; @@ -292,7 +292,7 @@ private Map> getJdbcHandlerMapForEnumInterfaces(Class> getJdbcHandlerMapForSuperclass(Class clazz) { - Class superclass = clazz.getSuperclass(); + Class superclass = clazz.getSuperclass(); if (superclass == null || Object.class.equals(superclass)) { return null; }