Class DefaultResultSetHandler

    • Field Detail

      • DEFERRED

        private static final java.lang.Object DEFERRED
      • executor

        private final Executor executor
      • rowBounds

        private final RowBounds rowBounds
      • boundSql

        private final BoundSql boundSql
      • nestedResultObjects

        private final java.util.Map<CacheKey,​java.lang.Object> nestedResultObjects
      • ancestorObjects

        private final java.util.Map<java.lang.String,​java.lang.Object> ancestorObjects
      • previousRowValue

        private java.lang.Object previousRowValue
      • nextResultMaps

        private final java.util.Map<java.lang.String,​ResultMapping> nextResultMaps
      • useConstructorMappings

        private boolean useConstructorMappings
    • Method Detail

      • handleOutputParameters

        public void handleOutputParameters​(java.sql.CallableStatement cs)
                                    throws java.sql.SQLException
        Specified by:
        handleOutputParameters in interface ResultSetHandler
        Throws:
        java.sql.SQLException
      • handleRefCursorOutputParameter

        private void handleRefCursorOutputParameter​(java.sql.ResultSet rs,
                                                    ParameterMapping parameterMapping,
                                                    MetaObject metaParam)
                                             throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • handleResultSets

        public java.util.List<java.lang.Object> handleResultSets​(java.sql.Statement stmt)
                                                          throws java.sql.SQLException
        Specified by:
        handleResultSets in interface ResultSetHandler
        Throws:
        java.sql.SQLException
      • handleCursorResultSets

        public <E> Cursor<E> handleCursorResultSets​(java.sql.Statement stmt)
                                             throws java.sql.SQLException
        Specified by:
        handleCursorResultSets in interface ResultSetHandler
        Throws:
        java.sql.SQLException
      • getFirstResultSet

        private ResultSetWrapper getFirstResultSet​(java.sql.Statement stmt)
                                            throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • getNextResultSet

        private ResultSetWrapper getNextResultSet​(java.sql.Statement stmt)
      • closeResultSet

        private void closeResultSet​(java.sql.ResultSet rs)
      • cleanUpAfterHandlingResultSet

        private void cleanUpAfterHandlingResultSet()
      • validateResultMapsCount

        private void validateResultMapsCount​(ResultSetWrapper rsw,
                                             int resultMapCount)
      • handleResultSet

        private void handleResultSet​(ResultSetWrapper rsw,
                                     ResultMap resultMap,
                                     java.util.List<java.lang.Object> multipleResults,
                                     ResultMapping parentMapping)
                              throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • collapseSingleResultList

        private java.util.List<java.lang.Object> collapseSingleResultList​(java.util.List<java.lang.Object> multipleResults)
      • ensureNoRowBounds

        private void ensureNoRowBounds()
      • checkResultHandler

        protected void checkResultHandler()
      • storeObject

        private void storeObject​(ResultHandler<?> resultHandler,
                                 DefaultResultContext<java.lang.Object> resultContext,
                                 java.lang.Object rowValue,
                                 ResultMapping parentMapping,
                                 java.sql.ResultSet rs)
                          throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • callResultHandler

        private void callResultHandler​(ResultHandler<?> resultHandler,
                                       DefaultResultContext<java.lang.Object> resultContext,
                                       java.lang.Object rowValue)
      • shouldProcessMoreRows

        private boolean shouldProcessMoreRows​(ResultContext<?> context,
                                              RowBounds rowBounds)
      • skipRows

        private void skipRows​(java.sql.ResultSet rs,
                              RowBounds rowBounds)
                       throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • getRowValue

        private java.lang.Object getRowValue​(ResultSetWrapper rsw,
                                             ResultMap resultMap,
                                             java.lang.String columnPrefix)
                                      throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • getRowValue

        private java.lang.Object getRowValue​(ResultSetWrapper rsw,
                                             ResultMap resultMap,
                                             CacheKey combinedKey,
                                             java.lang.String columnPrefix,
                                             java.lang.Object partialObject)
                                      throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • putAncestor

        private void putAncestor​(java.lang.Object resultObject,
                                 java.lang.String resultMapId)
      • shouldApplyAutomaticMappings

        private boolean shouldApplyAutomaticMappings​(ResultMap resultMap,
                                                     boolean isNested)
      • applyPropertyMappings

        private boolean applyPropertyMappings​(ResultSetWrapper rsw,
                                              ResultMap resultMap,
                                              MetaObject metaObject,
                                              ResultLoaderMap lazyLoader,
                                              java.lang.String columnPrefix)
                                       throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • getPropertyMappingValue

        private java.lang.Object getPropertyMappingValue​(java.sql.ResultSet rs,
                                                         MetaObject metaResultObject,
                                                         ResultMapping propertyMapping,
                                                         ResultLoaderMap lazyLoader,
                                                         java.lang.String columnPrefix)
                                                  throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • applyAutomaticMappings

        private boolean applyAutomaticMappings​(ResultSetWrapper rsw,
                                               ResultMap resultMap,
                                               MetaObject metaObject,
                                               java.lang.String columnPrefix)
                                        throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • linkToParents

        private void linkToParents​(java.sql.ResultSet rs,
                                   ResultMapping parentMapping,
                                   java.lang.Object rowValue)
                            throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • addPendingChildRelation

        private void addPendingChildRelation​(java.sql.ResultSet rs,
                                             MetaObject metaResultObject,
                                             ResultMapping parentMapping)
                                      throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • createKeyForMultipleResults

        private CacheKey createKeyForMultipleResults​(java.sql.ResultSet rs,
                                                     ResultMapping resultMapping,
                                                     java.lang.String names,
                                                     java.lang.String columns)
                                              throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • createResultObject

        private java.lang.Object createResultObject​(ResultSetWrapper rsw,
                                                    ResultMap resultMap,
                                                    ResultLoaderMap lazyLoader,
                                                    java.lang.String columnPrefix)
                                             throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • createResultObject

        private java.lang.Object createResultObject​(ResultSetWrapper rsw,
                                                    ResultMap resultMap,
                                                    java.util.List<java.lang.Class<?>> constructorArgTypes,
                                                    java.util.List<java.lang.Object> constructorArgs,
                                                    java.lang.String columnPrefix)
                                             throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • createParameterizedResultObject

        java.lang.Object createParameterizedResultObject​(ResultSetWrapper rsw,
                                                         java.lang.Class<?> resultType,
                                                         java.util.List<ResultMapping> constructorMappings,
                                                         java.util.List<java.lang.Class<?>> constructorArgTypes,
                                                         java.util.List<java.lang.Object> constructorArgs,
                                                         java.lang.String columnPrefix)
      • createByConstructorSignature

        private java.lang.Object createByConstructorSignature​(ResultSetWrapper rsw,
                                                              java.lang.Class<?> resultType,
                                                              java.util.List<java.lang.Class<?>> constructorArgTypes,
                                                              java.util.List<java.lang.Object> constructorArgs)
                                                       throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • createUsingConstructor

        private java.lang.Object createUsingConstructor​(ResultSetWrapper rsw,
                                                        java.lang.Class<?> resultType,
                                                        java.util.List<java.lang.Class<?>> constructorArgTypes,
                                                        java.util.List<java.lang.Object> constructorArgs,
                                                        java.lang.reflect.Constructor<?> constructor)
                                                 throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • findDefaultConstructor

        private java.lang.reflect.Constructor<?> findDefaultConstructor​(java.lang.reflect.Constructor<?>[] constructors)
      • allowedConstructorUsingTypeHandlers

        private boolean allowedConstructorUsingTypeHandlers​(java.lang.reflect.Constructor<?> constructor,
                                                            java.util.List<JdbcType> jdbcTypes)
      • createPrimitiveResultObject

        private java.lang.Object createPrimitiveResultObject​(ResultSetWrapper rsw,
                                                             ResultMap resultMap,
                                                             java.lang.String columnPrefix)
                                                      throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • getNestedQueryConstructorValue

        private java.lang.Object getNestedQueryConstructorValue​(java.sql.ResultSet rs,
                                                                ResultMapping constructorMapping,
                                                                java.lang.String columnPrefix)
                                                         throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • getNestedQueryMappingValue

        private java.lang.Object getNestedQueryMappingValue​(java.sql.ResultSet rs,
                                                            MetaObject metaResultObject,
                                                            ResultMapping propertyMapping,
                                                            ResultLoaderMap lazyLoader,
                                                            java.lang.String columnPrefix)
                                                     throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • prepareParameterForNestedQuery

        private java.lang.Object prepareParameterForNestedQuery​(java.sql.ResultSet rs,
                                                                ResultMapping resultMapping,
                                                                java.lang.Class<?> parameterType,
                                                                java.lang.String columnPrefix)
                                                         throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • prepareSimpleKeyParameter

        private java.lang.Object prepareSimpleKeyParameter​(java.sql.ResultSet rs,
                                                           ResultMapping resultMapping,
                                                           java.lang.Class<?> parameterType,
                                                           java.lang.String columnPrefix)
                                                    throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • prepareCompositeKeyParameter

        private java.lang.Object prepareCompositeKeyParameter​(java.sql.ResultSet rs,
                                                              ResultMapping resultMapping,
                                                              java.lang.Class<?> parameterType,
                                                              java.lang.String columnPrefix)
                                                       throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • instantiateParameterObject

        private java.lang.Object instantiateParameterObject​(java.lang.Class<?> parameterType)
      • resolveDiscriminatedResultMap

        public ResultMap resolveDiscriminatedResultMap​(java.sql.ResultSet rs,
                                                       ResultMap resultMap,
                                                       java.lang.String columnPrefix)
                                                throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • getDiscriminatorValue

        private java.lang.Object getDiscriminatorValue​(java.sql.ResultSet rs,
                                                       Discriminator discriminator,
                                                       java.lang.String columnPrefix)
                                                throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • prependPrefix

        private java.lang.String prependPrefix​(java.lang.String columnName,
                                               java.lang.String prefix)
      • applyNestedResultMappings

        private boolean applyNestedResultMappings​(ResultSetWrapper rsw,
                                                  ResultMap resultMap,
                                                  MetaObject metaObject,
                                                  java.lang.String parentPrefix,
                                                  CacheKey parentRowKey,
                                                  boolean newObject)
      • getColumnPrefix

        private java.lang.String getColumnPrefix​(java.lang.String parentPrefix,
                                                 ResultMapping resultMapping)
      • anyNotNullColumnHasValue

        private boolean anyNotNullColumnHasValue​(ResultMapping resultMapping,
                                                 java.lang.String columnPrefix,
                                                 ResultSetWrapper rsw)
                                          throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • getNestedResultMap

        private ResultMap getNestedResultMap​(java.sql.ResultSet rs,
                                             java.lang.String nestedResultMapId,
                                             java.lang.String columnPrefix)
                                      throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • createRowKey

        private CacheKey createRowKey​(ResultMap resultMap,
                                      ResultSetWrapper rsw,
                                      java.lang.String columnPrefix)
                               throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • getResultMappingsForRowKey

        private java.util.List<ResultMapping> getResultMappingsForRowKey​(ResultMap resultMap)
      • createRowKeyForMappedProperties

        private void createRowKeyForMappedProperties​(ResultMap resultMap,
                                                     ResultSetWrapper rsw,
                                                     CacheKey cacheKey,
                                                     java.util.List<ResultMapping> resultMappings,
                                                     java.lang.String columnPrefix)
                                              throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • createRowKeyForUnmappedProperties

        private void createRowKeyForUnmappedProperties​(ResultMap resultMap,
                                                       ResultSetWrapper rsw,
                                                       CacheKey cacheKey,
                                                       java.lang.String columnPrefix)
                                                throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • createRowKeyForMap

        private void createRowKeyForMap​(ResultSetWrapper rsw,
                                        CacheKey cacheKey)
                                 throws java.sql.SQLException
        Throws:
        java.sql.SQLException
      • linkObjects

        private void linkObjects​(MetaObject metaObject,
                                 ResultMapping resultMapping,
                                 java.lang.Object rowValue)
      • instantiateCollectionPropertyIfAppropriate

        private java.lang.Object instantiateCollectionPropertyIfAppropriate​(ResultMapping resultMapping,
                                                                            MetaObject metaObject)
      • hasTypeHandlerForResultObject

        private boolean hasTypeHandlerForResultObject​(ResultSetWrapper rsw,
                                                      java.lang.Class<?> resultType)