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
`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)`