@@ -166,24 +166,27 @@ public CacheKey createCacheKey(MappedStatement ms, Object parameterObject, RowBo
166
166
cacheKey .update (rowBounds .getLimit ());
167
167
cacheKey .update (boundSql .getSql ());
168
168
List <ParameterMapping > parameterMappings = boundSql .getParameterMappings ();
169
- if (parameterMappings .size () > 0 && parameterObject != null ) {
170
- TypeHandlerRegistry typeHandlerRegistry = ms .getConfiguration ().getTypeHandlerRegistry ();
171
- if (typeHandlerRegistry .hasTypeHandler (parameterObject .getClass ())) {
172
- cacheKey .update (parameterObject );
173
- } else {
174
- MetaObject metaObject = configuration .newMetaObject (parameterObject );
175
- for (ParameterMapping parameterMapping : parameterMappings ) {
176
- String propertyName = parameterMapping .getProperty ();
177
- if (boundSql .hasAdditionalParameter (propertyName )) { // issue #448 ask first for additional params
178
- cacheKey .update (boundSql .getAdditionalParameter (propertyName ));
179
- } else if (metaObject .hasGetter (propertyName )) {
180
- cacheKey .update (metaObject .getValue (propertyName ));
181
- }
169
+ TypeHandlerRegistry typeHandlerRegistry = ms .getConfiguration ().getTypeHandlerRegistry ();
170
+ for (int i = 0 ; i < parameterMappings .size (); i ++) { // mimic DefaultParameterHandler logic
171
+ ParameterMapping parameterMapping = parameterMappings .get (i );
172
+ if (parameterMapping .getMode () != ParameterMode .OUT ) {
173
+ Object value ;
174
+ String propertyName = parameterMapping .getProperty ();
175
+ if (boundSql .hasAdditionalParameter (propertyName )) {
176
+ value = boundSql .getAdditionalParameter (propertyName );
177
+ } else if (parameterObject == null ) {
178
+ value = null ;
179
+ } else if (typeHandlerRegistry .hasTypeHandler (parameterObject .getClass ())) {
180
+ value = parameterObject ;
181
+ } else {
182
+ MetaObject metaObject = configuration .newMetaObject (parameterObject );
183
+ value = metaObject .getValue (propertyName );
182
184
}
185
+ cacheKey .update (value );
183
186
}
184
187
}
185
188
return cacheKey ;
186
- }
189
+ }
187
190
188
191
public boolean isCached (MappedStatement ms , CacheKey key ) {
189
192
return localCache .getObject (key ) != null ;
0 commit comments