org.springframework.jdbc.core

## Class SqlRowSetResultSetExtractor

- java.lang.Object
- - org.springframework.jdbc.core.SqlRowSetResultSetExtractor

- All Implemented Interfaces:
    ResultSetExtractor<SqlRowSet>

      public class SqlRowSetResultSetExtractor
      extends Object
      implements ResultSetExtractor<SqlRowSet>

  `ResultSetExtractor` implementation that returns a Spring `SqlRowSet` representation for each given `ResultSet`.

  The default implementation uses a standard JDBC CachedRowSet underneath. This means that JDBC RowSet support needs to be available at runtime: by default, Sun's `com.sun.rowset.CachedRowSetImpl` class on Java 5 and 6, or the `javax.sql.rowset.RowSetProvider` mechanism on Java 7 / JDBC 4.1.

  Since:
    1.2
  Author:
    Juergen Hoeller
  See Also:
    `newCachedRowSet()`, `SqlRowSet`, `JdbcTemplate.queryForRowSet(String)`, `CachedRowSet`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `SqlRowSetResultSetExtractor()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected SqlRowSet` | `createSqlRowSet(ResultSet rs)` Create a SqlRowSet that wraps the given ResultSet, representing its data in a disconnected fashion.
    `SqlRowSet` | `extractData(ResultSet rs)` Implementations must implement this method to process the entire ResultSet.
    `protected CachedRowSet` | `newCachedRowSet()` Create a new CachedRowSet instance, to be populated by the `createSqlRowSet` implementation.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### SqlRowSetResultSetExtractor

          public SqlRowSetResultSetExtractor()

  - ### Method Detail

    - #### extractData

          public SqlRowSet extractData(ResultSet rs)
                                throws SQLException

      Description copied from interface: `ResultSetExtractor`
      Implementations must implement this method to process the entire ResultSet.
      Specified by:
        `extractData` in interface `ResultSetExtractor<SqlRowSet>`
      Parameters:
        `rs` - ResultSet to extract data from. Implementations should not close this: it will be closed by the calling JdbcTemplate.
      Returns:
        an arbitrary result object, or `null` if none (the extractor will typically be stateful in the latter case).
      Throws:
        `SQLException` - if a SQLException is encountered getting column values or navigating (that is, there's no need to catch SQLException)

    - #### createSqlRowSet

          protected SqlRowSet createSqlRowSet(ResultSet rs)
                                       throws SQLException

      Create a SqlRowSet that wraps the given ResultSet, representing its data in a disconnected fashion.

      This implementation creates a Spring ResultSetWrappingSqlRowSet instance that wraps a standard JDBC CachedRowSet instance. Can be overridden to use a different implementation.

      Parameters:
        `rs` - the original ResultSet (connected)
      Returns:
        the disconnected SqlRowSet
      Throws:
        `SQLException` - if thrown by JDBC methods
      See Also:
        `newCachedRowSet()`, `ResultSetWrappingSqlRowSet`

    - #### newCachedRowSet

          protected CachedRowSet newCachedRowSet()
                                          throws SQLException

      Create a new CachedRowSet instance, to be populated by the `createSqlRowSet` implementation.

      The default implementation uses JDBC 4.1's RowSetProvider when running on JDK 7 or higher, falling back to Sun's `com.sun.rowset.CachedRowSetImpl` class on older JDKs.

      Returns:
        a new CachedRowSet instance
      Throws:
        `SQLException` - if thrown by JDBC methods
      See Also:
        `createSqlRowSet(java.sql.ResultSet)`