NamedParameterJdbcTemplate
· Similar to PreparedStatement
· We use “: names” instead of ?
INSERT INTO student VALUES (:sno,:name,:address)
· we have a method pubic T execute(String sql,Map map,PreparedStatementCallback psc)
· We have to implement that method.
Example:
//StudentBo.java
package bo;
public class StudentBo {
private int sno;
private String name;
private String address;
public int getSno() {
return sno;
}
public void setSno(int sno) {
this.sno = sno;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
package dao;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.PreparedStatementCallback;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import bo.StudentBo;
public class NamedParameterJdbcTemplateDao {
private NamedParameterJdbcTemplate template;
public NamedParameterJdbcTemplate getTemplate() {
return template;
}
public void setTemplate(NamedParameterJdbcTemplate template) {
this.template = template;
}
public int save(StudentBo bo){
String qry ="INSERT INTO student VALUES (:sno,:name,:address)";
Map<String, Object> map = new HashMap<String, Object>();
map.put("sno", bo.getSno());
map.put("name", bo.getName());
map.put("address", bo.getAddress());
Object ob = template.execute(qry, map, new PreparedStatementCallback<Object>() {
@Override
public Object doInPreparedStatement(PreparedStatement ps)
throws SQLException, DataAccessException {
return ps.executeUpdate();
}
}
);
System.out.println("Saved--->"+ob);
return 1;
}
}
//Main.java
package main;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import bo.StudentBo;
import dao.NamedParameterJdbcTemplateDao;
public class Main {
public static void main(String[] args) {
BeanFactory factory = new ClassPathXmlApplicationContext("res/s.xml");
NamedParameterJdbcTemplateDao dao = (NamedParameterJdbcTemplateDao) factory.getBean("dao");
StudentBo bo = new StudentBo();
bo.setSno(5);
bo.setName("VINOD");
bo.setAddress("BANGLORE");
System.out.println("SAVING : "+dao.save(bo));
}
}
<beans>
<!-- 1. set Properties to DriverManagerDataSource -->
<bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="root" />
<property name="password" value="infy" />
</bean>
<!-- 2.set JdbcTemplate Properties -->
<bean id="template" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<property name="dataSource" ref="ds"></property>
</bean>
<!-- 3.set DAO Properties -->
<bean id="dao" class="dao.NamedParameterJdbcTemplateDao">
<property name="template" ref="template"></property>
</bean>
</beans>