Class DefaultResultSetHandler
java.lang.Object
org.apache.ibatis.executor.resultset.DefaultResultSetHandler
- All Implemented Interfaces:
ResultSetHandler
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static classprivate static class -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Map<String, List<DefaultResultSetHandler.UnMappedColumnAutoMapping>> private final BoundSqlprivate final Configurationprivate static final Objectprivate final Executorprivate final MappedStatementprivate final Map<String, ResultMapping> private final ObjectFactoryprivate final ParameterHandlerprivate final Map<CacheKey, List<DefaultResultSetHandler.PendingRelation>> private Objectprivate final ReflectorFactoryprivate final ResultHandler<?> private final RowBoundsprivate final TypeHandlerRegistryprivate boolean -
Constructor Summary
ConstructorsConstructorDescriptionDefaultResultSetHandler(Executor executor, MappedStatement mappedStatement, ParameterHandler parameterHandler, ResultHandler<?> resultHandler, BoundSql boundSql, RowBounds rowBounds) -
Method Summary
Modifier and TypeMethodDescriptionprivate voidaddPendingChildRelation(ResultSet rs, MetaObject metaResultObject, ResultMapping parentMapping) private booleanallowedConstructorUsingTypeHandlers(Constructor<?> constructor, List<JdbcType> jdbcTypes) private booleananyNotNullColumnHasValue(ResultMapping resultMapping, String columnPrefix, ResultSetWrapper rsw) private booleanapplyAutomaticMappings(ResultSetWrapper rsw, ResultMap resultMap, MetaObject metaObject, String columnPrefix) private booleanapplyNestedResultMappings(ResultSetWrapper rsw, ResultMap resultMap, MetaObject metaObject, String parentPrefix, CacheKey parentRowKey, boolean newObject) private booleanapplyPropertyMappings(ResultSetWrapper rsw, ResultMap resultMap, MetaObject metaObject, ResultLoaderMap lazyLoader, String columnPrefix) private voidcallResultHandler(ResultHandler<?> resultHandler, DefaultResultContext<Object> resultContext, Object rowValue) protected voidprivate voidprivate voidcollapseSingleResultList(List<Object> multipleResults) private CacheKeycombineKeys(CacheKey rowKey, CacheKey parentRowKey) createAutomaticMappings(ResultSetWrapper rsw, ResultMap resultMap, MetaObject metaObject, String columnPrefix) private ObjectcreateByConstructorSignature(ResultSetWrapper rsw, Class<?> resultType, List<Class<?>> constructorArgTypes, List<Object> constructorArgs) private CacheKeycreateKeyForMultipleResults(ResultSet rs, ResultMapping resultMapping, String names, String columns) (package private) ObjectcreateParameterizedResultObject(ResultSetWrapper rsw, Class<?> resultType, List<ResultMapping> constructorMappings, List<Class<?>> constructorArgTypes, List<Object> constructorArgs, String columnPrefix) private ObjectcreatePrimitiveResultObject(ResultSetWrapper rsw, ResultMap resultMap, String columnPrefix) private ObjectcreateResultObject(ResultSetWrapper rsw, ResultMap resultMap, List<Class<?>> constructorArgTypes, List<Object> constructorArgs, String columnPrefix) private ObjectcreateResultObject(ResultSetWrapper rsw, ResultMap resultMap, ResultLoaderMap lazyLoader, String columnPrefix) private CacheKeycreateRowKey(ResultMap resultMap, ResultSetWrapper rsw, String columnPrefix) private voidcreateRowKeyForMap(ResultSetWrapper rsw, CacheKey cacheKey) private voidcreateRowKeyForMappedProperties(ResultMap resultMap, ResultSetWrapper rsw, CacheKey cacheKey, List<ResultMapping> resultMappings, String columnPrefix) private voidcreateRowKeyForUnmappedProperties(ResultMap resultMap, ResultSetWrapper rsw, CacheKey cacheKey, String columnPrefix) private ObjectcreateUsingConstructor(ResultSetWrapper rsw, Class<?> resultType, List<Class<?>> constructorArgTypes, List<Object> constructorArgs, Constructor<?> constructor) private voidprivate Constructor<?> findDefaultConstructor(Constructor<?>[] constructors) private StringgetColumnPrefix(String parentPrefix, ResultMapping resultMapping) private ObjectgetDiscriminatorValue(ResultSet rs, Discriminator discriminator, String columnPrefix) private ResultSetWrappergetFirstResultSet(Statement stmt) private ObjectgetNestedQueryConstructorValue(ResultSet rs, ResultMapping constructorMapping, String columnPrefix) private ObjectgetNestedQueryMappingValue(ResultSet rs, MetaObject metaResultObject, ResultMapping propertyMapping, ResultLoaderMap lazyLoader, String columnPrefix) private ResultMapgetNestedResultMap(ResultSet rs, String nestedResultMapId, String columnPrefix) private ResultSetWrappergetNextResultSet(Statement stmt) private ObjectgetPropertyMappingValue(ResultSet rs, MetaObject metaResultObject, ResultMapping propertyMapping, ResultLoaderMap lazyLoader, String columnPrefix) private List<ResultMapping> getResultMappingsForRowKey(ResultMap resultMap) private ObjectgetRowValue(ResultSetWrapper rsw, ResultMap resultMap, String columnPrefix) private ObjectgetRowValue(ResultSetWrapper rsw, ResultMap resultMap, CacheKey combinedKey, String columnPrefix, Object partialObject) <E> Cursor<E> voidprivate voidhandleRefCursorOutputParameter(ResultSet rs, ParameterMapping parameterMapping, MetaObject metaParam) private voidhandleResultSet(ResultSetWrapper rsw, ResultMap resultMap, List<Object> multipleResults, ResultMapping parentMapping) handleResultSets(Statement stmt) voidhandleRowValues(ResultSetWrapper rsw, ResultMap resultMap, ResultHandler<?> resultHandler, RowBounds rowBounds, ResultMapping parentMapping) private voidhandleRowValuesForNestedResultMap(ResultSetWrapper rsw, ResultMap resultMap, ResultHandler<?> resultHandler, RowBounds rowBounds, ResultMapping parentMapping) private voidhandleRowValuesForSimpleResultMap(ResultSetWrapper rsw, ResultMap resultMap, ResultHandler<?> resultHandler, RowBounds rowBounds, ResultMapping parentMapping) private booleanhasTypeHandlerForResultObject(ResultSetWrapper rsw, Class<?> resultType) private ObjectinstantiateCollectionPropertyIfAppropriate(ResultMapping resultMapping, MetaObject metaObject) private ObjectinstantiateParameterObject(Class<?> parameterType) private voidlinkObjects(MetaObject metaObject, ResultMapping resultMapping, Object rowValue) private voidlinkToParents(ResultSet rs, ResultMapping parentMapping, Object rowValue) private ObjectprepareCompositeKeyParameter(ResultSet rs, ResultMapping resultMapping, Class<?> parameterType, String columnPrefix) private ObjectprepareParameterForNestedQuery(ResultSet rs, ResultMapping resultMapping, Class<?> parameterType, String columnPrefix) private ObjectprepareSimpleKeyParameter(ResultSet rs, ResultMapping resultMapping, Class<?> parameterType, String columnPrefix) private StringprependPrefix(String columnName, String prefix) private voidputAncestor(Object resultObject, String resultMapId) resolveDiscriminatedResultMap(ResultSet rs, ResultMap resultMap, String columnPrefix) private booleanshouldApplyAutomaticMappings(ResultMap resultMap, boolean isNested) private booleanshouldProcessMoreRows(ResultContext<?> context, RowBounds rowBounds) private voidprivate voidstoreObject(ResultHandler<?> resultHandler, DefaultResultContext<Object> resultContext, Object rowValue, ResultMapping parentMapping, ResultSet rs) private voidvalidateResultMapsCount(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:
handleOutputParametersin interfaceResultSetHandler- Throws:
SQLException
-
handleRefCursorOutputParameter
private void handleRefCursorOutputParameter(ResultSet rs, ParameterMapping parameterMapping, MetaObject metaParam) throws SQLException - Throws:
SQLException
-
handleResultSets
- Specified by:
handleResultSetsin interfaceResultSetHandler- Throws:
SQLException
-
handleCursorResultSets
- Specified by:
handleCursorResultSetsin 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
-