Class DefaultResultSetHandler
java.lang.Object
org.apache.ibatis.executor.resultset.DefaultResultSetHandler
- All Implemented Interfaces:
ResultSetHandler
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static class
private static class
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Map
<String, List<DefaultResultSetHandler.UnMappedColumnAutoMapping>> private final BoundSql
private final Configuration
private static final Object
private final Executor
private final MappedStatement
private final Map
<String, ResultMapping> private final ObjectFactory
private final ParameterHandler
private final Map
<CacheKey, List<DefaultResultSetHandler.PendingRelation>> private Object
private final ReflectorFactory
private final ResultHandler
<?> private final RowBounds
private final TypeHandlerRegistry
private boolean
-
Constructor Summary
ConstructorsConstructorDescriptionDefaultResultSetHandler
(Executor executor, MappedStatement mappedStatement, ParameterHandler parameterHandler, ResultHandler<?> resultHandler, BoundSql boundSql, RowBounds rowBounds) -
Method Summary
Modifier and TypeMethodDescriptionprivate void
addPendingChildRelation
(ResultSet rs, MetaObject metaResultObject, ResultMapping parentMapping) private boolean
allowedConstructorUsingTypeHandlers
(Constructor<?> constructor, List<JdbcType> jdbcTypes) private boolean
anyNotNullColumnHasValue
(ResultMapping resultMapping, String columnPrefix, ResultSetWrapper rsw) private boolean
applyAutomaticMappings
(ResultSetWrapper rsw, ResultMap resultMap, MetaObject metaObject, String columnPrefix) private boolean
applyNestedResultMappings
(ResultSetWrapper rsw, ResultMap resultMap, MetaObject metaObject, String parentPrefix, CacheKey parentRowKey, boolean newObject) private boolean
applyPropertyMappings
(ResultSetWrapper rsw, ResultMap resultMap, MetaObject metaObject, ResultLoaderMap lazyLoader, String columnPrefix) private void
callResultHandler
(ResultHandler<?> resultHandler, DefaultResultContext<Object> resultContext, Object rowValue) protected void
private void
private void
collapseSingleResultList
(List<Object> multipleResults) private CacheKey
combineKeys
(CacheKey rowKey, CacheKey parentRowKey) createAutomaticMappings
(ResultSetWrapper rsw, ResultMap resultMap, MetaObject metaObject, String columnPrefix) private Object
createByConstructorSignature
(ResultSetWrapper rsw, Class<?> resultType, List<Class<?>> constructorArgTypes, List<Object> constructorArgs) private CacheKey
createKeyForMultipleResults
(ResultSet rs, ResultMapping resultMapping, String names, String columns) (package private) Object
createParameterizedResultObject
(ResultSetWrapper rsw, Class<?> resultType, List<ResultMapping> constructorMappings, List<Class<?>> constructorArgTypes, List<Object> constructorArgs, String columnPrefix) private Object
createPrimitiveResultObject
(ResultSetWrapper rsw, ResultMap resultMap, String columnPrefix) private Object
createResultObject
(ResultSetWrapper rsw, ResultMap resultMap, List<Class<?>> constructorArgTypes, List<Object> constructorArgs, String columnPrefix) private Object
createResultObject
(ResultSetWrapper rsw, ResultMap resultMap, ResultLoaderMap lazyLoader, String columnPrefix) private CacheKey
createRowKey
(ResultMap resultMap, ResultSetWrapper rsw, String columnPrefix) private void
createRowKeyForMap
(ResultSetWrapper rsw, CacheKey cacheKey) private void
createRowKeyForMappedProperties
(ResultMap resultMap, ResultSetWrapper rsw, CacheKey cacheKey, List<ResultMapping> resultMappings, String columnPrefix) private void
createRowKeyForUnmappedProperties
(ResultMap resultMap, ResultSetWrapper rsw, CacheKey cacheKey, String columnPrefix) private Object
createUsingConstructor
(ResultSetWrapper rsw, Class<?> resultType, List<Class<?>> constructorArgTypes, List<Object> constructorArgs, Constructor<?> constructor) private void
private Constructor
<?> findDefaultConstructor
(Constructor<?>[] constructors) private String
getColumnPrefix
(String parentPrefix, ResultMapping resultMapping) private Object
getDiscriminatorValue
(ResultSet rs, Discriminator discriminator, String columnPrefix) private ResultSetWrapper
getFirstResultSet
(Statement stmt) private Object
getNestedQueryConstructorValue
(ResultSet rs, ResultMapping constructorMapping, String columnPrefix) private Object
getNestedQueryMappingValue
(ResultSet rs, MetaObject metaResultObject, ResultMapping propertyMapping, ResultLoaderMap lazyLoader, String columnPrefix) private ResultMap
getNestedResultMap
(ResultSet rs, String nestedResultMapId, String columnPrefix) private ResultSetWrapper
getNextResultSet
(Statement stmt) private Object
getPropertyMappingValue
(ResultSet rs, MetaObject metaResultObject, ResultMapping propertyMapping, ResultLoaderMap lazyLoader, String columnPrefix) private List
<ResultMapping> getResultMappingsForRowKey
(ResultMap resultMap) private Object
getRowValue
(ResultSetWrapper rsw, ResultMap resultMap, String columnPrefix) private Object
getRowValue
(ResultSetWrapper rsw, ResultMap resultMap, CacheKey combinedKey, String columnPrefix, Object partialObject) <E> Cursor
<E> void
private void
handleRefCursorOutputParameter
(ResultSet rs, ParameterMapping parameterMapping, MetaObject metaParam) private void
handleResultSet
(ResultSetWrapper rsw, ResultMap resultMap, List<Object> multipleResults, ResultMapping parentMapping) handleResultSets
(Statement stmt) void
handleRowValues
(ResultSetWrapper rsw, ResultMap resultMap, ResultHandler<?> resultHandler, RowBounds rowBounds, ResultMapping parentMapping) private void
handleRowValuesForNestedResultMap
(ResultSetWrapper rsw, ResultMap resultMap, ResultHandler<?> resultHandler, RowBounds rowBounds, ResultMapping parentMapping) private void
handleRowValuesForSimpleResultMap
(ResultSetWrapper rsw, ResultMap resultMap, ResultHandler<?> resultHandler, RowBounds rowBounds, ResultMapping parentMapping) private boolean
hasTypeHandlerForResultObject
(ResultSetWrapper rsw, Class<?> resultType) private Object
instantiateCollectionPropertyIfAppropriate
(ResultMapping resultMapping, MetaObject metaObject) private Object
instantiateParameterObject
(Class<?> parameterType) private void
linkObjects
(MetaObject metaObject, ResultMapping resultMapping, Object rowValue) private void
linkToParents
(ResultSet rs, ResultMapping parentMapping, Object rowValue) private Object
prepareCompositeKeyParameter
(ResultSet rs, ResultMapping resultMapping, Class<?> parameterType, String columnPrefix) private Object
prepareParameterForNestedQuery
(ResultSet rs, ResultMapping resultMapping, Class<?> parameterType, String columnPrefix) private Object
prepareSimpleKeyParameter
(ResultSet rs, ResultMapping resultMapping, Class<?> parameterType, String columnPrefix) private String
prependPrefix
(String columnName, String prefix) private void
putAncestor
(Object resultObject, String resultMapId) resolveDiscriminatedResultMap
(ResultSet rs, ResultMap resultMap, String columnPrefix) private boolean
shouldApplyAutomaticMappings
(ResultMap resultMap, boolean isNested) private boolean
shouldProcessMoreRows
(ResultContext<?> context, RowBounds rowBounds) private void
private void
storeObject
(ResultHandler<?> resultHandler, DefaultResultContext<Object> resultContext, Object rowValue, ResultMapping parentMapping, ResultSet rs) private void
validateResultMapsCount
(ResultSetWrapper rsw, int resultMapCount)
-
Field Details
-
DEFERRED
-
executor
-
configuration
-
mappedStatement
-
rowBounds
-
parameterHandler
-
resultHandler
-
boundSql
-
typeHandlerRegistry
-
objectFactory
-
reflectorFactory
-
nestedResultObjects
-
ancestorObjects
-
previousRowValue
-
nextResultMaps
-
pendingRelations
-
autoMappingsCache
-
useConstructorMappings
private boolean useConstructorMappings
-
-
Constructor Details
-
DefaultResultSetHandler
public DefaultResultSetHandler(Executor executor, MappedStatement mappedStatement, ParameterHandler parameterHandler, ResultHandler<?> resultHandler, BoundSql boundSql, RowBounds rowBounds)
-
-
Method Details
-
handleOutputParameters
- Specified by:
handleOutputParameters
in interfaceResultSetHandler
- Throws:
SQLException
-
handleRefCursorOutputParameter
private void handleRefCursorOutputParameter(ResultSet rs, ParameterMapping parameterMapping, MetaObject metaParam) throws SQLException - Throws:
SQLException
-
handleResultSets
- Specified by:
handleResultSets
in interfaceResultSetHandler
- Throws:
SQLException
-
handleCursorResultSets
- Specified by:
handleCursorResultSets
in interfaceResultSetHandler
- Throws:
SQLException
-
getFirstResultSet
- Throws:
SQLException
-
getNextResultSet
-
closeResultSet
-
cleanUpAfterHandlingResultSet
private void cleanUpAfterHandlingResultSet() -
validateResultMapsCount
-
handleResultSet
private void handleResultSet(ResultSetWrapper rsw, ResultMap resultMap, List<Object> multipleResults, ResultMapping parentMapping) throws SQLException - Throws:
SQLException
-
collapseSingleResultList
-
handleRowValues
public void handleRowValues(ResultSetWrapper rsw, ResultMap resultMap, ResultHandler<?> resultHandler, RowBounds rowBounds, ResultMapping parentMapping) throws SQLException - Throws:
SQLException
-
ensureNoRowBounds
private void ensureNoRowBounds() -
checkResultHandler
protected void checkResultHandler() -
handleRowValuesForSimpleResultMap
private void handleRowValuesForSimpleResultMap(ResultSetWrapper rsw, ResultMap resultMap, ResultHandler<?> resultHandler, RowBounds rowBounds, ResultMapping parentMapping) throws SQLException - Throws:
SQLException
-
storeObject
private void storeObject(ResultHandler<?> resultHandler, DefaultResultContext<Object> resultContext, Object rowValue, ResultMapping parentMapping, ResultSet rs) throws SQLException - Throws:
SQLException
-
callResultHandler
private void callResultHandler(ResultHandler<?> resultHandler, DefaultResultContext<Object> resultContext, Object rowValue) -
shouldProcessMoreRows
-
skipRows
- Throws:
SQLException
-
getRowValue
private Object getRowValue(ResultSetWrapper rsw, ResultMap resultMap, String columnPrefix) throws SQLException - Throws:
SQLException
-
getRowValue
private Object getRowValue(ResultSetWrapper rsw, ResultMap resultMap, CacheKey combinedKey, String columnPrefix, Object partialObject) throws SQLException - Throws:
SQLException
-
putAncestor
-
shouldApplyAutomaticMappings
-
applyPropertyMappings
private boolean applyPropertyMappings(ResultSetWrapper rsw, ResultMap resultMap, MetaObject metaObject, ResultLoaderMap lazyLoader, String columnPrefix) throws SQLException - Throws:
SQLException
-
getPropertyMappingValue
private Object getPropertyMappingValue(ResultSet rs, MetaObject metaResultObject, ResultMapping propertyMapping, ResultLoaderMap lazyLoader, String columnPrefix) throws SQLException - Throws:
SQLException
-
createAutomaticMappings
private List<DefaultResultSetHandler.UnMappedColumnAutoMapping> createAutomaticMappings(ResultSetWrapper rsw, ResultMap resultMap, MetaObject metaObject, String columnPrefix) throws SQLException - Throws:
SQLException
-
applyAutomaticMappings
private boolean applyAutomaticMappings(ResultSetWrapper rsw, ResultMap resultMap, MetaObject metaObject, String columnPrefix) throws SQLException - Throws:
SQLException
-
linkToParents
private void linkToParents(ResultSet rs, ResultMapping parentMapping, Object rowValue) throws SQLException - Throws:
SQLException
-
addPendingChildRelation
private void addPendingChildRelation(ResultSet rs, MetaObject metaResultObject, ResultMapping parentMapping) throws SQLException - Throws:
SQLException
-
createKeyForMultipleResults
private CacheKey createKeyForMultipleResults(ResultSet rs, ResultMapping resultMapping, String names, String columns) throws SQLException - Throws:
SQLException
-
createResultObject
private Object createResultObject(ResultSetWrapper rsw, ResultMap resultMap, ResultLoaderMap lazyLoader, String columnPrefix) throws SQLException - Throws:
SQLException
-
createResultObject
private Object createResultObject(ResultSetWrapper rsw, ResultMap resultMap, List<Class<?>> constructorArgTypes, List<Object> constructorArgs, String columnPrefix) throws SQLException - Throws:
SQLException
-
createParameterizedResultObject
Object createParameterizedResultObject(ResultSetWrapper rsw, Class<?> resultType, List<ResultMapping> constructorMappings, List<Class<?>> constructorArgTypes, List<Object> constructorArgs, String columnPrefix) -
createByConstructorSignature
private Object createByConstructorSignature(ResultSetWrapper rsw, Class<?> resultType, List<Class<?>> constructorArgTypes, List<Object> constructorArgs) throws SQLException - Throws:
SQLException
-
createUsingConstructor
private Object createUsingConstructor(ResultSetWrapper rsw, Class<?> resultType, List<Class<?>> constructorArgTypes, List<Object> constructorArgs, Constructor<?> constructor) throws SQLException - Throws:
SQLException
-
findDefaultConstructor
-
allowedConstructorUsingTypeHandlers
private boolean allowedConstructorUsingTypeHandlers(Constructor<?> constructor, List<JdbcType> jdbcTypes) -
createPrimitiveResultObject
private Object createPrimitiveResultObject(ResultSetWrapper rsw, ResultMap resultMap, String columnPrefix) throws SQLException - Throws:
SQLException
-
getNestedQueryConstructorValue
private Object getNestedQueryConstructorValue(ResultSet rs, ResultMapping constructorMapping, String columnPrefix) throws SQLException - Throws:
SQLException
-
getNestedQueryMappingValue
private Object getNestedQueryMappingValue(ResultSet rs, MetaObject metaResultObject, ResultMapping propertyMapping, ResultLoaderMap lazyLoader, String columnPrefix) throws SQLException - Throws:
SQLException
-
prepareParameterForNestedQuery
private Object prepareParameterForNestedQuery(ResultSet rs, ResultMapping resultMapping, Class<?> parameterType, String columnPrefix) throws SQLException - Throws:
SQLException
-
prepareSimpleKeyParameter
private Object prepareSimpleKeyParameter(ResultSet rs, ResultMapping resultMapping, Class<?> parameterType, String columnPrefix) throws SQLException - Throws:
SQLException
-
prepareCompositeKeyParameter
private Object prepareCompositeKeyParameter(ResultSet rs, ResultMapping resultMapping, Class<?> parameterType, String columnPrefix) throws SQLException - Throws:
SQLException
-
instantiateParameterObject
-
resolveDiscriminatedResultMap
public ResultMap resolveDiscriminatedResultMap(ResultSet rs, ResultMap resultMap, String columnPrefix) throws SQLException - Throws:
SQLException
-
getDiscriminatorValue
private Object getDiscriminatorValue(ResultSet rs, Discriminator discriminator, String columnPrefix) throws SQLException - Throws:
SQLException
-
prependPrefix
-
handleRowValuesForNestedResultMap
private void handleRowValuesForNestedResultMap(ResultSetWrapper rsw, ResultMap resultMap, ResultHandler<?> resultHandler, RowBounds rowBounds, ResultMapping parentMapping) throws SQLException - Throws:
SQLException
-
applyNestedResultMappings
private boolean applyNestedResultMappings(ResultSetWrapper rsw, ResultMap resultMap, MetaObject metaObject, String parentPrefix, CacheKey parentRowKey, boolean newObject) -
getColumnPrefix
-
anyNotNullColumnHasValue
private boolean anyNotNullColumnHasValue(ResultMapping resultMapping, String columnPrefix, ResultSetWrapper rsw) throws SQLException - Throws:
SQLException
-
getNestedResultMap
private ResultMap getNestedResultMap(ResultSet rs, String nestedResultMapId, String columnPrefix) throws SQLException - Throws:
SQLException
-
createRowKey
private CacheKey createRowKey(ResultMap resultMap, ResultSetWrapper rsw, String columnPrefix) throws SQLException - Throws:
SQLException
-
combineKeys
-
getResultMappingsForRowKey
-
createRowKeyForMappedProperties
private void createRowKeyForMappedProperties(ResultMap resultMap, ResultSetWrapper rsw, CacheKey cacheKey, List<ResultMapping> resultMappings, String columnPrefix) throws SQLException - Throws:
SQLException
-
createRowKeyForUnmappedProperties
private void createRowKeyForUnmappedProperties(ResultMap resultMap, ResultSetWrapper rsw, CacheKey cacheKey, String columnPrefix) throws SQLException - Throws:
SQLException
-
createRowKeyForMap
- Throws:
SQLException
-
linkObjects
-
instantiateCollectionPropertyIfAppropriate
private Object instantiateCollectionPropertyIfAppropriate(ResultMapping resultMapping, MetaObject metaObject) -
hasTypeHandlerForResultObject
-