org.springframework.jdbc.core
Class SqlRowSetResultSetExtractor

java.lang.Object
  extended by 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
SqlRowSetResultSetExtractor()
           
 
Method Summary
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 creates a new instance of Sun's com.sun.rowset.CachedRowSetImpl class.

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