@@ -81,82 +81,100 @@ public TypeHandlerRegistry() {
81
81
public TypeHandlerRegistry (Configuration configuration ) {
82
82
this .unknownTypeHandler = new UnknownTypeHandler (configuration );
83
83
84
- register (Boolean .class , new BooleanTypeHandler ());
85
- register (boolean .class , new BooleanTypeHandler ());
86
- register (JdbcType .BOOLEAN , new BooleanTypeHandler ());
87
- register (JdbcType .BIT , new BooleanTypeHandler ());
88
-
89
- register (Byte .class , new ByteTypeHandler ());
90
- register (byte .class , new ByteTypeHandler ());
91
- register (JdbcType .TINYINT , new ByteTypeHandler ());
92
-
93
- register (Short .class , new ShortTypeHandler ());
94
- register (short .class , new ShortTypeHandler ());
95
- register (JdbcType .SMALLINT , new ShortTypeHandler ());
96
-
97
- register (Integer .class , new IntegerTypeHandler ());
98
- register (int .class , new IntegerTypeHandler ());
99
- register (JdbcType .INTEGER , new IntegerTypeHandler ());
100
-
101
- register (Long .class , new LongTypeHandler ());
102
- register (long .class , new LongTypeHandler ());
103
-
104
- register (Float .class , new FloatTypeHandler ());
105
- register (float .class , new FloatTypeHandler ());
106
- register (JdbcType .FLOAT , new FloatTypeHandler ());
107
-
108
- register (Double .class , new DoubleTypeHandler ());
109
- register (double .class , new DoubleTypeHandler ());
110
- register (JdbcType .DOUBLE , new DoubleTypeHandler ());
84
+ BooleanTypeHandler booleanTypeHandler = new BooleanTypeHandler ();
85
+ register (Boolean .class , booleanTypeHandler );
86
+ register (boolean .class , booleanTypeHandler );
87
+ register (JdbcType .BOOLEAN , booleanTypeHandler );
88
+ register (JdbcType .BIT , booleanTypeHandler );
89
+
90
+ ByteTypeHandler byteTypeHandler = new ByteTypeHandler ();
91
+ register (Byte .class , byteTypeHandler );
92
+ register (byte .class , byteTypeHandler );
93
+ register (JdbcType .TINYINT , byteTypeHandler );
94
+
95
+ ShortTypeHandler shortTypeHandler = new ShortTypeHandler ();
96
+ register (Short .class , shortTypeHandler );
97
+ register (short .class , shortTypeHandler );
98
+ register (JdbcType .SMALLINT , shortTypeHandler );
99
+
100
+ IntegerTypeHandler integerTypeHandler = new IntegerTypeHandler ();
101
+ register (Integer .class , integerTypeHandler );
102
+ register (int .class , integerTypeHandler );
103
+ register (JdbcType .INTEGER , integerTypeHandler );
104
+
105
+ LongTypeHandler longTypeHandler = new LongTypeHandler ();
106
+ register (Long .class , longTypeHandler );
107
+ register (long .class , longTypeHandler );
108
+
109
+ FloatTypeHandler floatTypeHandler = new FloatTypeHandler ();
110
+ register (Float .class , floatTypeHandler );
111
+ register (float .class , floatTypeHandler );
112
+ register (JdbcType .FLOAT , floatTypeHandler );
113
+
114
+ DoubleTypeHandler doubleTypeHandler = new DoubleTypeHandler ();
115
+ register (Double .class , doubleTypeHandler );
116
+ register (double .class , doubleTypeHandler );
117
+ register (JdbcType .DOUBLE , doubleTypeHandler );
111
118
112
119
register (Reader .class , new ClobReaderTypeHandler ());
113
- register (String .class , new StringTypeHandler ());
114
- register (String .class , JdbcType .CHAR , new StringTypeHandler ());
115
- register (String .class , JdbcType .CLOB , new ClobTypeHandler ());
116
- register (String .class , JdbcType .VARCHAR , new StringTypeHandler ());
117
- register (String .class , JdbcType .LONGVARCHAR , new StringTypeHandler ());
118
- register (String .class , JdbcType .NVARCHAR , new NStringTypeHandler ());
119
- register (String .class , JdbcType .NCHAR , new NStringTypeHandler ());
120
- register (String .class , JdbcType .NCLOB , new NClobTypeHandler ());
121
- register (JdbcType .CHAR , new StringTypeHandler ());
122
- register (JdbcType .VARCHAR , new StringTypeHandler ());
123
- register (JdbcType .CLOB , new ClobTypeHandler ());
124
- register (JdbcType .LONGVARCHAR , new StringTypeHandler ());
125
- register (JdbcType .NVARCHAR , new NStringTypeHandler ());
126
- register (JdbcType .NCHAR , new NStringTypeHandler ());
127
- register (JdbcType .NCLOB , new NClobTypeHandler ());
128
-
129
- register (Object .class , JdbcType .ARRAY , new ArrayTypeHandler ());
130
- register (JdbcType .ARRAY , new ArrayTypeHandler ());
120
+ StringTypeHandler stringTypeHandler = new StringTypeHandler ();
121
+ register (String .class , stringTypeHandler );
122
+ register (String .class , JdbcType .CHAR , stringTypeHandler );
123
+ ClobTypeHandler clobTypeHandler = new ClobTypeHandler ();
124
+ register (String .class , JdbcType .CLOB , clobTypeHandler );
125
+ register (String .class , JdbcType .VARCHAR , stringTypeHandler );
126
+ register (String .class , JdbcType .LONGVARCHAR , stringTypeHandler );
127
+ NStringTypeHandler nStringTypeHandler = new NStringTypeHandler ();
128
+ register (String .class , JdbcType .NVARCHAR , nStringTypeHandler );
129
+ register (String .class , JdbcType .NCHAR , nStringTypeHandler );
130
+ NClobTypeHandler nClobTypeHandler = new NClobTypeHandler ();
131
+ register (String .class , JdbcType .NCLOB , nClobTypeHandler );
132
+ register (JdbcType .CHAR , stringTypeHandler );
133
+ register (JdbcType .VARCHAR , stringTypeHandler );
134
+ register (JdbcType .CLOB , clobTypeHandler );
135
+ register (JdbcType .LONGVARCHAR , stringTypeHandler );
136
+ register (JdbcType .NVARCHAR , nStringTypeHandler );
137
+ register (JdbcType .NCHAR , nStringTypeHandler );
138
+ register (JdbcType .NCLOB , nClobTypeHandler );
139
+
140
+ ArrayTypeHandler arrayTypeHandler = new ArrayTypeHandler ();
141
+ register (Object .class , JdbcType .ARRAY , arrayTypeHandler );
142
+ register (JdbcType .ARRAY , arrayTypeHandler );
131
143
132
144
register (BigInteger .class , new BigIntegerTypeHandler ());
133
- register (JdbcType .BIGINT , new LongTypeHandler () );
145
+ register (JdbcType .BIGINT , longTypeHandler );
134
146
135
- register (BigDecimal .class , new BigDecimalTypeHandler ());
136
- register (JdbcType .REAL , new BigDecimalTypeHandler ());
137
- register (JdbcType .DECIMAL , new BigDecimalTypeHandler ());
138
- register (JdbcType .NUMERIC , new BigDecimalTypeHandler ());
147
+ BigDecimalTypeHandler bigDecimalTypeHandler = new BigDecimalTypeHandler ();
148
+ register (BigDecimal .class , bigDecimalTypeHandler );
149
+ register (JdbcType .REAL , bigDecimalTypeHandler );
150
+ register (JdbcType .DECIMAL , bigDecimalTypeHandler );
151
+ register (JdbcType .NUMERIC , bigDecimalTypeHandler );
139
152
140
153
register (InputStream .class , new BlobInputStreamTypeHandler ());
141
154
register (Byte [].class , new ByteObjectArrayTypeHandler ());
142
- register (Byte [].class , JdbcType .BLOB , new BlobByteObjectArrayTypeHandler ());
143
- register (Byte [].class , JdbcType .LONGVARBINARY , new BlobByteObjectArrayTypeHandler ());
155
+ BlobByteObjectArrayTypeHandler blobByteObjectArrayTypeHandler = new BlobByteObjectArrayTypeHandler ();
156
+ register (Byte [].class , JdbcType .BLOB , blobByteObjectArrayTypeHandler );
157
+ register (Byte [].class , JdbcType .LONGVARBINARY , blobByteObjectArrayTypeHandler );
144
158
register (byte [].class , new ByteArrayTypeHandler ());
145
- register (byte [].class , JdbcType .BLOB , new BlobTypeHandler ());
146
- register (byte [].class , JdbcType .LONGVARBINARY , new BlobTypeHandler ());
147
- register (JdbcType .LONGVARBINARY , new BlobTypeHandler ());
148
- register (JdbcType .BLOB , new BlobTypeHandler ());
159
+ BlobTypeHandler blobTypeHandler = new BlobTypeHandler ();
160
+ register (byte [].class , JdbcType .BLOB , blobTypeHandler );
161
+ register (byte [].class , JdbcType .LONGVARBINARY , blobTypeHandler );
162
+ register (JdbcType .LONGVARBINARY , blobTypeHandler );
163
+ register (JdbcType .BLOB , blobTypeHandler );
149
164
150
165
register (Object .class , unknownTypeHandler );
151
166
register (Object .class , JdbcType .OTHER , unknownTypeHandler );
152
167
register (JdbcType .OTHER , unknownTypeHandler );
153
168
154
- register (Date .class , new DateTypeHandler ());
155
- register (Date .class , JdbcType .DATE , new DateOnlyTypeHandler ());
156
- register (Date .class , JdbcType .TIME , new TimeOnlyTypeHandler ());
157
- register (JdbcType .TIMESTAMP , new DateTypeHandler ());
158
- register (JdbcType .DATE , new DateOnlyTypeHandler ());
159
- register (JdbcType .TIME , new TimeOnlyTypeHandler ());
169
+ DateTypeHandler dateTypeHandler = new DateTypeHandler ();
170
+ register (Date .class , dateTypeHandler );
171
+ DateOnlyTypeHandler dateOnlyTypeHandler = new DateOnlyTypeHandler ();
172
+ register (Date .class , JdbcType .DATE , dateOnlyTypeHandler );
173
+ TimeOnlyTypeHandler timeOnlyTypeHandler = new TimeOnlyTypeHandler ();
174
+ register (Date .class , JdbcType .TIME , timeOnlyTypeHandler );
175
+ register (JdbcType .TIMESTAMP , dateTypeHandler );
176
+ register (JdbcType .DATE , dateOnlyTypeHandler );
177
+ register (JdbcType .TIME , timeOnlyTypeHandler );
160
178
161
179
register (java .sql .Date .class , new SqlDateTypeHandler ());
162
180
register (java .sql .Time .class , new SqlTimeTypeHandler ());
@@ -177,8 +195,9 @@ public TypeHandlerRegistry(Configuration configuration) {
177
195
register (JapaneseDate .class , new JapaneseDateTypeHandler ());
178
196
179
197
// issue #273
180
- register (Character .class , new CharacterTypeHandler ());
181
- register (char .class , new CharacterTypeHandler ());
198
+ CharacterTypeHandler characterTypeHandler = new CharacterTypeHandler ();
199
+ register (Character .class , characterTypeHandler );
200
+ register (char .class , characterTypeHandler );
182
201
}
183
202
184
203
/**
@@ -245,10 +264,10 @@ private <T> TypeHandler<T> getTypeHandler(Type type, JdbcType jdbcType) {
245
264
handler = jdbcHandlerMap .get (jdbcType );
246
265
if (handler == null ) {
247
266
handler = jdbcHandlerMap .get (null );
248
- }
249
- if ( handler == null ) {
250
- // #591
251
- handler = pickSoleHandler ( jdbcHandlerMap );
267
+ if ( handler == null ) {
268
+ // #591
269
+ handler = pickSoleHandler ( jdbcHandlerMap );
270
+ }
252
271
}
253
272
}
254
273
// type drives generics here
@@ -281,17 +300,15 @@ private Map<JdbcType, TypeHandler<?>> getJdbcHandlerMapForEnumInterfaces(Class<?
281
300
for (Class <?> iface : clazz .getInterfaces ()) {
282
301
Map <JdbcType , TypeHandler <?>> jdbcHandlerMap = typeHandlerMap .get (iface );
283
302
if (jdbcHandlerMap == null ) {
284
- jdbcHandlerMap = getJdbcHandlerMapForEnumInterfaces (iface , enumClazz );
303
+ return getJdbcHandlerMapForEnumInterfaces (iface , enumClazz );
285
304
}
286
- if (jdbcHandlerMap != null ) {
287
- // Found a type handler registered to a super interface
288
- HashMap <JdbcType , TypeHandler <?>> newMap = new HashMap <>();
289
- for (Entry <JdbcType , TypeHandler <?>> entry : jdbcHandlerMap .entrySet ()) {
290
- // Create a type handler instance with enum type as a constructor arg
291
- newMap .put (entry .getKey (), getInstance (enumClazz , entry .getValue ().getClass ()));
292
- }
293
- return newMap ;
305
+ // Found a type handler registered to a super interface
306
+ HashMap <JdbcType , TypeHandler <?>> newMap = new HashMap <>();
307
+ for (Entry <JdbcType , TypeHandler <?>> entry : jdbcHandlerMap .entrySet ()) {
308
+ // Create a type handler instance with enum type as a constructor arg
309
+ newMap .put (entry .getKey (), getInstance (enumClazz , entry .getValue ().getClass ()));
294
310
}
311
+ return newMap ;
295
312
}
296
313
return null ;
297
314
}
@@ -345,18 +362,20 @@ public <T> void register(TypeHandler<T> typeHandler) {
345
362
mappedTypeFound = true ;
346
363
}
347
364
}
348
- // @since 3.1.0 - try to auto-discover the mapped type
349
- if (!mappedTypeFound && typeHandler instanceof TypeReference ) {
350
- try {
351
- TypeReference <T > typeReference = (TypeReference <T >) typeHandler ;
352
- register (typeReference .getRawType (), typeHandler );
353
- mappedTypeFound = true ;
354
- } catch (Throwable t ) {
355
- // maybe users define the TypeReference with a different type and are not assignable, so just ignore it
356
- }
357
- }
358
365
if (!mappedTypeFound ) {
359
- register ((Class <T >) null , typeHandler );
366
+ // @since 3.1.0 - try to auto-discover the mapped type
367
+ if (typeHandler instanceof TypeReference ) {
368
+ try {
369
+ TypeReference <T > typeReference = (TypeReference <T >) typeHandler ;
370
+ register (typeReference .getRawType (), typeHandler );
371
+ mappedTypeFound = true ;
372
+ } catch (Throwable t ) {
373
+ // maybe users define the TypeReference with a different type and are not assignable, so just ignore it
374
+ }
375
+ }
376
+ if (!mappedTypeFound ) {
377
+ register ((Class <T >) null , typeHandler );
378
+ }
360
379
}
361
380
}
362
381
0 commit comments