Skip to content

Commit c1887e3

Browse files
committed
CacheKey should be created with the same order than the DefaultParameterHandler handles parameters.
1 parent 7b26ea3 commit c1887e3

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

src/main/java/org/apache/ibatis/executor/BaseExecutor.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -173,11 +173,11 @@ public CacheKey createCacheKey(MappedStatement ms, Object parameterObject, RowBo
173173
} else {
174174
MetaObject metaObject = configuration.newMetaObject(parameterObject);
175175
for (ParameterMapping parameterMapping : parameterMappings) {
176-
String propertyName = parameterMapping.getProperty();
177-
if (metaObject.hasGetter(propertyName)) {
178-
cacheKey.update(metaObject.getValue(propertyName));
179-
} else if (boundSql.hasAdditionalParameter(propertyName)) {
176+
String propertyName = parameterMapping.getProperty();
177+
if (boundSql.hasAdditionalParameter(propertyName)) { // issue #448 ask first for additional params
180178
cacheKey.update(boundSql.getAdditionalParameter(propertyName));
179+
} else if (metaObject.hasGetter(propertyName)) {
180+
cacheKey.update(metaObject.getValue(propertyName));
181181
}
182182
}
183183
}

src/main/java/org/apache/ibatis/scripting/defaults/DefaultParameterHandler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,6 @@ public void setParameters(PreparedStatement ps) throws SQLException {
5656
ErrorContext.instance().activity("setting parameters").object(mappedStatement.getParameterMap().getId());
5757
List<ParameterMapping> parameterMappings = boundSql.getParameterMappings();
5858
if (parameterMappings != null) {
59-
MetaObject metaObject = parameterObject == null ? null : configuration.newMetaObject(parameterObject);
6059
for (int i = 0; i < parameterMappings.size(); i++) {
6160
ParameterMapping parameterMapping = parameterMappings.get(i);
6261
if (parameterMapping.getMode() != ParameterMode.OUT) {
@@ -69,7 +68,8 @@ public void setParameters(PreparedStatement ps) throws SQLException {
6968
} else if (typeHandlerRegistry.hasTypeHandler(parameterObject.getClass())) {
7069
value = parameterObject;
7170
} else {
72-
value = metaObject == null ? null : metaObject.getValue(propertyName);
71+
MetaObject metaObject = configuration.newMetaObject(parameterObject);
72+
value = metaObject.getValue(propertyName);
7373
}
7474
TypeHandler typeHandler = parameterMapping.getTypeHandler();
7575
JdbcType jdbcType = parameterMapping.getJdbcType();

0 commit comments

Comments
 (0)