Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Spring NamedParameterJdbcTemplate Tutorial

DZone's Guide to

Spring NamedParameterJdbcTemplate Tutorial

This article takes a look at a tutorial that explains Spring NamedParameterJdbctemplate and helps you specify the named parameters.

· Database Zone ·
Free Resource

MariaDB TX, proven in production and driven by the community, is a complete database solution for any and every enterprise — a modern database for modern applications.

The NamedParameterJdbcTemplate class helps you specify the named parameters instead of classic placeholder('?') argument. Named parameters improve readability 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 = new NamedParameterJdbcTemplate(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("forumId", Integer.valueOf(forum.getForumId()));
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 = new MapSqlParameterSource("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.

You can download and try the example here.

Source :
Source + Lib :


MariaDB AX is an open source database for modern analytics: distributed, columnar and easy to use.

Topics:
sql ,spring ,database ,tutorial ,jdbc

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}