Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use Spring ColumnMapRowMapper?

Tags:

spring

Can anyone help me with an example of ColumnMapRowMapper? How to use it?

like image 827
jagamot Avatar asked Oct 28 '11 18:10

jagamot


1 Answers

I've written an answer in my blog, http://selvam2day.blogspot.com/2013/06/singlecolumnrowmapper.html, but here it is for your convenience below:

SingleColumnRowMapper & ColumnMapRowMapper examples in Spring

Spring JDBC includes two default implementations of RowMapper - SingleColumnRowMapper and ColumnMapRowMapper. Below are sample usages of those row mappers.

There are lots of situations when you just want to select one column or only a selected set of columns in your application, and to write custom row mapper implementations for these scenarios doesn't seem right. In these scenarios, we can make use of the spring-provided row mapper implementations.

SingleColumnRowMapper

This class implements the RowMapper interface. As the name suggests, this class can be used to retrieve a single value from the database as a java.util.List. The list contains the column values one per each row.

In the code snippet below, the type of the result value for each row is specified by the constructor argument. It can also be specified by invoking the setRequiredType(Class<T> requiredType) method.

public List getFirstName(int userID)
{ 
  String sql = "select firstname from users where user_id = " + userID; 

  SingleColumnRowMapper rowMapper = new SingleColumnRowMapper(String.class); 
  List firstNameList = (List) getJdbcTemplate().query(sql, rowMapper); 

  for(String firstName: firstNameList) 
    System.out.println(firstName); 

  return firstNameList; 
} 

More information on the class and its methods can be found in the spring javadoc link below.
http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/jdbc/core/SingleColumnRowMapper.html

ColumnMapRowMapper

ColumnMapRowMapper class can be used to retrieve more than one column from a database table. This class also implements the RowMapper interface. This class 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.

public List<Map<String, Object>> getUserData(int userID)
{

  String sql = "select firstname, lastname, dept from users where userID = ? ";

  ColumnMapRowMapper rowMapper = new ColumnMapRowMapper();
  List<Map<String, Object>> userDataList =  getJdbcTemplate().query(sql, rowMapper, userID);

  for(Map<String, Object> map: userDataList){

      System.out.println("FirstName = " + map.get("firstname"));
      System.out.println("LastName = " + map.get("lastname"));
      System.out.println("Department = " + map.get("dept"));

  }

  return userDataList;

}

More information on the class and its methods can be found in the spring javadoc link below.
http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/jdbc/core/ColumnMapRowMapper.html

like image 103
Selvam Avatar answered Sep 20 '22 01:09

Selvam