public class RowMapperResultSetExtractor<T> extends java.lang.Object implements ResultSetExtractor<java.util.List<T>>
Useful for the typical case of one object per row in the database table. The number of entries in the results list will match the number of rows.
Note that a RowMapper object is typically stateless and thus reusable; just the RowMapperResultSetExtractor adapter is stateful.
A usage example with JdbcTemplate:
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); // reusable object RowMapper rowMapper = new UserRowMapper(); // reusable object List allUsers = (List) jdbcTemplate.query( "select * from user", new RowMapperResultSetExtractor(rowMapper, 10)); User user = (User) jdbcTemplate.queryForObject( "select * from user where id=?", new Object[] {id}, new RowMapperResultSetExtractor(rowMapper, 1));
Alternatively, consider subclassing MappingSqlQuery from the jdbc.object
package: Instead of working with separate JdbcTemplate and RowMapper objects,
you can have executable query objects (containing row-mapping logic) there.
RowMapper
,
JdbcTemplate
,
MappingSqlQuery
Modifier and Type | Field and Description |
---|---|
private RowMapper<T> |
rowMapper |
private int |
rowsExpected |
Constructor and Description |
---|
RowMapperResultSetExtractor(RowMapper<T> rowMapper)
Create a new RowMapperResultSetExtractor.
|
RowMapperResultSetExtractor(RowMapper<T> rowMapper,
int rowsExpected)
Create a new RowMapperResultSetExtractor.
|
Modifier and Type | Method and Description |
---|---|
java.util.List<T> |
extractData(java.sql.ResultSet rs)
Implementations must implement this method to process the entire ResultSet.
|
public RowMapperResultSetExtractor(RowMapper<T> rowMapper)
rowMapper
- the RowMapper which creates an object for each rowpublic RowMapperResultSetExtractor(RowMapper<T> rowMapper, int rowsExpected)
rowMapper
- the RowMapper which creates an object for each rowrowsExpected
- the number of expected rows
(just used for optimized collection handling)public java.util.List<T> extractData(java.sql.ResultSet rs) throws java.sql.SQLException
ResultSetExtractor
extractData
in interface ResultSetExtractor<java.util.List<T>>
rs
- ResultSet to extract data from. Implementations should
not close this: it will be closed by the calling JdbcTemplate.null
if none
(the extractor will typically be stateful in the latter case).java.sql.SQLException
- if a SQLException is encountered getting column
values or navigating (that is, there's no need to catch SQLException)