The NamedParameterJdbcTemplate class helps you specify the named parameters insted of classic
placeholder('?') argument. Named
parameters improves readiablity and are easier to maintain.
package com.vaannila.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import javax.sql.DataSource;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import com.vaannila.domain.Forum;
public class ForumDAOImpl implements ForumDAO {
private NamedParameterJdbcTemplate
namedParameterJdbcTemplate;
public void setDataSource(DataSource dataSource) {
this.namedParameterJdbcTemplate
= newNamedParameterJdbcTemplate(dataSource);
}
public void insertForum(Forum forum) {
String query = "INSERT
INTO FORUMS (FORUM_ID, FORUM_NAME, FORUM_DESC) VALUES
(:forumId,:forumName,:forumDesc)";
Map namedParameters = new HashMap();
namedParameters.put("forumName", forum.getForumName());
namedParameters.put("forumDesc", forum.getForumDesc());
namedParameterJdbcTemplate.update(query,
namedParameters);
}
public Forum
selectForum(int forumId) {
String query = "SELECT
* FROM FORUMS WHERE FORUM_ID=:forumId";
SqlParameterSource namedParameters = newMapSqlParameterSource("forumId", Integer.valueOf(forumId));
return (Forum)
namedParameterJdbcTemplate.queryForObject(query,
namedParameters, new RowMapper() {
public Object
mapRow(ResultSet resultSet, int rowNum)
throws SQLException {
return new Forum(resultSet.getInt("FORUM_ID"), resultSet.getString("FORUM_NAME"), resultSet.getString("FORUM_DESC"));
}
});
}
}
The named parameter values can be
specified using a map, where the parameter name serves as the key. You can also
map the sql parameters using the MapSqlParameterSource class.

No comments:
Post a Comment