Skip to content

Commit ecc148e

Browse files
committed
Minor optimization for enum type handler resolution.
1 parent f301c5a commit ecc148e

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

src/main/java/org/apache/ibatis/type/TypeHandlerRegistry.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -207,22 +207,24 @@ private <T> TypeHandler<T> getTypeHandler(Type type, JdbcType jdbcType) {
207207
handler = pickSoleHandler(jdbcHandlerMap);
208208
}
209209
}
210-
if (handler == null && type != null && type instanceof Class && Enum.class.isAssignableFrom((Class<?>) type)) {
211-
handler = new EnumTypeHandler((Class<?>) type);
212-
}
213210
// type drives generics here
214211
return (TypeHandler<T>) handler;
215212
}
216213

214+
@SuppressWarnings({ "rawtypes", "unchecked" })
217215
private Map<JdbcType, TypeHandler<?>> getJdbcHandlerMap(Type type) {
218216
Map<JdbcType, TypeHandler<?>> jdbcHandlerMap = TYPE_HANDLER_MAP.get(type);
219217
if (NULL_TYPE_HANDLER_MAP.equals(jdbcHandlerMap)) {
220218
return null;
221219
}
222220
if (jdbcHandlerMap == null && type instanceof Class) {
223-
jdbcHandlerMap = getJdbcHandlerMapForSuperclass((Class<?>) type);
221+
Class<?> clazz = (Class<?>) type;
222+
jdbcHandlerMap = getJdbcHandlerMapForSuperclass(clazz);
224223
if (jdbcHandlerMap != null) {
225224
TYPE_HANDLER_MAP.put(type, jdbcHandlerMap);
225+
} else if (clazz.isEnum()) {
226+
register(clazz, new EnumTypeHandler(clazz));
227+
return TYPE_HANDLER_MAP.get(clazz);
226228
}
227229
}
228230
if (jdbcHandlerMap == null) {

0 commit comments

Comments
 (0)