Skip to main content
Hint

This article is generated by AI translation.

ResultSetExtractor

Use the ResultSetExtractor interface to customize how a ResultSet is processed.

Example
public class UserResultSetExtractor implements ResultSetExtractor<Map<Integer, String>> {
public Map<Integer, String> extractData(ResultSet rs) throws SQLException {
Map<Integer, String> hashMap = new HashMap<>();

while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
hashMap.put(id, name);
}

return hashMap;
}
};
Possible output
{1=mali, 2=dative, 3=jon wes, 4=mary, 5=matt}

How to Use

Example: Programmatic API
Map<Integer, String> result = jdbc.queryForList("select * from users", userExtractor);
Example: Declarative API
@SimpleMapper
public interface UserMapper {
@Query(value = "select * from users where id > #{id}",
resultSetExtractor = UserResultSetExtractor.class)
Map<Integer, String> listUsers(@Param("id") long searchId);
}
Example: Builder
Map<Integer, String> result = adapter.queryByEntity(User.class)
.le(User::getId, 100) // match IDs <= 100
.queryForList(userExtractor); // process with ResultSetExtractor
Example: Mapper File
<select id="queryListByAge" resultSetExtractor="com.example.dto.UserResultSetExtractor">
select * from users where age = #{age}
</select>

Built-ins

dbVisitor provides 9 built-in implementations; you can extend further as needed.

  • Object-mapping based
    • BeanMappingResultSetExtractor: same purpose as BeanMappingRowMapper
    • MapMappingResultSetExtractor: same purpose as MapMappingRowMapper
  • Based on query results
    • ColumnMapResultSetExtractor: same purpose as ColumnMapRowMapper
    • PairsResultSetExtractor: maps each row to a key-value pair; key/value types can be handled by TypeHandler.
  • Handling multiple result sets
    • CallableMultipleResultSetExtractor: handles all outputs from CallableStatement, including out arguments, result sets, and multiple results.
    • PreparedMultipleResultSetExtractor: handles all outputs from PreparedStatement, including result sets and multiple results.
  • Wrapping existing row handlers
    • RowMapperResultSetExtractor: constructor accepts a RowMapper.
    • FilterResultSetExtractor: extends RowMapperResultSetExtractor with a Predicate to decide whether to keep collected data.
    • RowCallbackHandlerResultSetExtractor: constructor accepts a RowCallbackHandler.