Package org.springframework.jdbc.core

# Class ColumnMapRowMapper

java.lang.Object
org.springframework.jdbc.core.ColumnMapRowMapper

All Implemented Interfaces:
  `RowMapper<Map<String,Object>>`

public class ColumnMapRowMapper extends Object implements RowMapper<Map<String,Object>>
`RowMapper` implementation that creates a `java.util.Map` for each row, representing all columns as key-value pairs: one entry for each column, with the column name as key.

The Map implementation to use and the key to use for each column in the column Map can be customized by overriding `createColumnMap(int)` and `getColumnKey(java.lang.String)`, respectively.

Note: By default, `ColumnMapRowMapper` will try to build a linked Map with case-insensitive keys, to preserve column order as well as allow any casing to be used for column names.

Since:
  1.2
Author:
  Juergen Hoeller
See Also:
  - `JdbcTemplate.queryForList(String)`
  - `JdbcTemplate.queryForMap(String)`

## Constructor Summary

Constructors
Constructor
Description
`ColumnMapRowMapper()`

## Method Summary

Modifier and Type
Method
Description
`protected Map<String,Object>`
`createColumnMap(int columnCount)`
Create a Map instance to be used as column map.
`protected String`
`getColumnKey(String columnName)`
Determine the key to use for the given column in the column Map.
`protected Object`
`getColumnValue(ResultSet rs, int index)`
Retrieve a JDBC object value for the specified column.
`Map<String,Object>`
`mapRow(ResultSet rs, int rowNum)`
Implementations must implement this method to map each row of data in the `ResultSet`.

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

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

## Constructor Details

### ColumnMapRowMapper

public ColumnMapRowMapper()

## Method Details

### mapRow

public Map<String,Object> mapRow(ResultSet rs, int rowNum) throws SQLException
Description copied from interface: `RowMapper`
Implementations must implement this method to map each row of data in the `ResultSet`. This method should not call `next()` on the `ResultSet`; it is only supposed to map values of the current row.

Specified by:
  `mapRow` in interface `RowMapper<Map<String,Object>>`
Parameters:
  `rs` - the `ResultSet` to map (pre-initialized for the current row)
  `rowNum` - the number of the current row
Returns:
  the result object for the current row (may be `null`)
Throws:
  `SQLException` - if an SQLException is encountered while getting column values (that is, there's no need to catch SQLException)

### createColumnMap

protected Map<String,Object> createColumnMap(int columnCount)
Create a Map instance to be used as column map.

By default, a linked case-insensitive Map will be created.

Parameters:
  `columnCount` - the column count, to be used as initial capacity for the Map
Returns:
  the new Map instance
See Also:
  - `LinkedCaseInsensitiveMap`

### getColumnKey

protected String getColumnKey(String columnName)
Determine the key to use for the given column in the column Map.

By default, the supplied column name will be returned unmodified.

Parameters:
  `columnName` - the column name as returned by the ResultSet
Returns:
  the column key to use
See Also:
  - `ResultSetMetaData.getColumnName(int)`

### getColumnValue

@Nullable protected Object getColumnValue(ResultSet rs, int index) throws SQLException
Retrieve a JDBC object value for the specified column.

The default implementation uses the `getObject` method. Additionally, this implementation includes a "hack" to get around Oracle returning a non-standard object for their TIMESTAMP data type.

Parameters:
  `rs` - the ResultSet holding the data
  `index` - the column index
Returns:
  the Object returned
Throws:
  `SQLException`
See Also:
  - `JdbcUtils.getResultSetValue(java.sql.ResultSet, int, java.lang.Class<?>)`