Skip to content

Commit c0e65e1

Browse files
committed
Revert Modification
1 parent 6759bea commit c0e65e1

File tree

2 files changed

+31
-29
lines changed

2 files changed

+31
-29
lines changed

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

Lines changed: 19 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -206,8 +206,18 @@ public CacheKey createCacheKey(MappedStatement ms, Object parameterObject, RowBo
206206
// mimic DefaultParameterHandler logic
207207
for (ParameterMapping parameterMapping : parameterMappings) {
208208
if (parameterMapping.getMode() != ParameterMode.OUT) {
209+
Object value;
209210
String propertyName = parameterMapping.getProperty();
210-
Object value = parseCacheValue(parameterObject, boundSql, typeHandlerRegistry, propertyName, configuration);
211+
if (boundSql.hasAdditionalParameter(propertyName)) {
212+
value = boundSql.getAdditionalParameter(propertyName);
213+
} else if (parameterObject == null) {
214+
value = null;
215+
} else if (typeHandlerRegistry.hasTypeHandler(parameterObject.getClass())) {
216+
value = parameterObject;
217+
} else {
218+
MetaObject metaObject = configuration.newMetaObject(parameterObject);
219+
value = metaObject.getValue(propertyName);
220+
}
211221
cacheKey.update(value);
212222
}
213223
}
@@ -218,23 +228,6 @@ public CacheKey createCacheKey(MappedStatement ms, Object parameterObject, RowBo
218228
return cacheKey;
219229
}
220230

221-
public static Object parseCacheValue(Object parameterObject, BoundSql boundSql,
222-
TypeHandlerRegistry typeHandlerRegistry,
223-
String propertyName, Configuration configuration) {
224-
Object value;
225-
if (boundSql.hasAdditionalParameter(propertyName)) {
226-
value = boundSql.getAdditionalParameter(propertyName);
227-
} else if (parameterObject == null) {
228-
value = null;
229-
} else if (typeHandlerRegistry.hasTypeHandler(parameterObject.getClass())) {
230-
value = parameterObject;
231-
} else {
232-
MetaObject metaObject = configuration.newMetaObject(parameterObject);
233-
value = metaObject.getValue(propertyName);
234-
}
235-
return value;
236-
}
237-
238231
@Override
239232
public boolean isCached(MappedStatement ms, CacheKey key) {
240233
return localCache.getObject(key) != null;
@@ -279,10 +272,10 @@ public void clearLocalCache() {
279272
protected abstract List<BatchResult> doFlushStatements(boolean isRollback) throws SQLException;
280273

281274
protected abstract <E> List<E> doQuery(MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql)
282-
throws SQLException;
275+
throws SQLException;
283276

284277
protected abstract <E> Cursor<E> doQueryCursor(MappedStatement ms, Object parameter, RowBounds rowBounds, BoundSql boundSql)
285-
throws SQLException;
278+
throws SQLException;
286279

287280
protected void closeStatement(Statement statement) {
288281
if (statement != null) {
@@ -366,11 +359,11 @@ private static class DeferredLoad {
366359

367360
// issue #781
368361
public DeferredLoad(MetaObject resultObject,
369-
String property,
370-
CacheKey key,
371-
PerpetualCache localCache,
372-
Configuration configuration,
373-
Class<?> targetType) {
362+
String property,
363+
CacheKey key,
364+
PerpetualCache localCache,
365+
Configuration configuration,
366+
Class<?> targetType) {
374367
this.resultObject = resultObject;
375368
this.property = property;
376369
this.key = key;
@@ -387,7 +380,7 @@ public boolean canLoad() {
387380
public void load() {
388381
@SuppressWarnings("unchecked")
389382
// we suppose we get back a List
390-
List<Object> list = (List<Object>) localCache.getObject(key);
383+
List<Object> list = (List<Object>) localCache.getObject(key);
391384
Object value = resultExtractor.extractObjectFromList(list, targetType);
392385
resultObject.setValue(property, value);
393386
}

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

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@
1919
import java.sql.SQLException;
2020
import java.util.List;
2121

22-
import org.apache.ibatis.executor.BaseExecutor;
2322
import org.apache.ibatis.executor.ErrorContext;
2423
import org.apache.ibatis.executor.parameter.ParameterHandler;
2524
import org.apache.ibatis.mapping.BoundSql;
2625
import org.apache.ibatis.mapping.MappedStatement;
2726
import org.apache.ibatis.mapping.ParameterMapping;
2827
import org.apache.ibatis.mapping.ParameterMode;
28+
import org.apache.ibatis.reflection.MetaObject;
2929
import org.apache.ibatis.session.Configuration;
3030
import org.apache.ibatis.type.JdbcType;
3131
import org.apache.ibatis.type.TypeException;
@@ -66,9 +66,18 @@ public void setParameters(PreparedStatement ps) {
6666
for (int i = 0; i < parameterMappings.size(); i++) {
6767
ParameterMapping parameterMapping = parameterMappings.get(i);
6868
if (parameterMapping.getMode() != ParameterMode.OUT) {
69+
Object value;
6970
String propertyName = parameterMapping.getProperty();
70-
Object value =
71-
BaseExecutor.parseCacheValue(parameterObject, boundSql, typeHandlerRegistry, propertyName, configuration);
71+
if (boundSql.hasAdditionalParameter(propertyName)) { // issue #448 ask first for additional params
72+
value = boundSql.getAdditionalParameter(propertyName);
73+
} else if (parameterObject == null) {
74+
value = null;
75+
} else if (typeHandlerRegistry.hasTypeHandler(parameterObject.getClass())) {
76+
value = parameterObject;
77+
} else {
78+
MetaObject metaObject = configuration.newMetaObject(parameterObject);
79+
value = metaObject.getValue(propertyName);
80+
}
7281
TypeHandler typeHandler = parameterMapping.getTypeHandler();
7382
JdbcType jdbcType = parameterMapping.getJdbcType();
7483
if (value == null && jdbcType == null) {

0 commit comments

Comments
 (0)