English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

ejemplo de NamedParameterJdbcTemplate de Spring

Spring ofrece otro método para insertar datos a través de parámetros nombrados. De esta manera, usamos nombres en lugar de ? (punto de interrogación). Por lo tanto, es mejor recordar los datos de las columnas.

ejemplo simple de consulta con parámetros nombrados

insert into employee values (:id,:name,:salary)

métodos de la clase NamedParameterJdbcTemplate

En este ejemplo, llamaremos solo al método execute de la clase NamedParameterJdbcTemplate. La sintaxis de este método es la siguiente:

public T execute(String sql,Map map,PreparedStatementCallback psc)

ejemplo de la clase NamedParameterJdbcTemplate

Supongamos que ya has instalado Oracle10se creó la siguiente tabla en la base de datos g.

create table employee(
número de id(10)
name varchar2(100),
número de salario(10)
);

Employee.java

Esta clase contiene3un objeto con constructor, setter y getter de propiedades.

paquete com.w3codebox;
public class Employee {
private int id;
private String name;
private float salary;
//no-constructores arg y parametrizados
//getters and setters
}

EmployeeDao.java

contiene la propiedad jdbcTemplate y un método de guardar.

paquete com.w3codebox;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.PreparedStatementCallback;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import java.util.*;
public class EmpDao {
NamedParameterJdbcTemplate template;
public EmpDao(NamedParameterJdbcTemplate template) {
        this.template = template;
}
public  void save (Emp e){
String query="insert into employee values (:id,:name,:salary)";
Map<String,Object> map=new HashMap<String,Object>();
map.put("id",e.getId());
map.put("name",e.getName());
map.put("salary",e.getSalary());
template.execute(query,map,new PreparedStatementCallback() {
    @Override
    public Object doInPreparedStatement(PreparedStatement ps)
            lanza SQLException, DataAccessException {
        return ps.executeUpdate();
    }
});
}
}

applicationContext.xml

DriverManagerDataSource para contener información sobre la base de datos, como el nombre de la clase del controlador, la URL de conexión, el nombre de usuario y la contraseña.

En la clase NamedParameterJdbcTemplate de tipo DriverManagerDataSource hay un nombre datasource Las propiedades. Por lo tanto, necesitamos proporcionar una referencia al objeto DriverManagerDataSource para las propiedades de origen de datos en la clase NamedParameterJdbcTemplate.

Aquí, usamos el objeto NamedParameterJdbcTemplate en la clase EmployeeDao, por lo tanto lo pasamos a través del constructor, pero también puede usar el método setter.

<?xml version="1.0" encoding="UTF-8"?>
<beans
    xmlns="http://www.springframework.org/schema/beans
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
    xmlns:p="http://www.springframework.org/schema/p
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe" />
<property name="username" value="system" />
<property name="password" value="oracle" />
</bean>
<bean id="jtemplate" 
 class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg ref="ds"></constructor-arg>
</bean>
<bean id="edao" class="com.w3codebox.EmpDao">
<constructor-arg>
<ref bean="jtemplate"/>
</constructor-arg>
</bean>
</beans>

SimpleTest.java

Este tipo obtiene Bean desde el archivo applicationContext.xml y llama al método save.

paquete com.w3codebox;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
public class SimpleTest {
  public static void main(String[] args) {
    Resource r=new ClassPathResource("applicationContext.xml");
    BeanFactory factory=new XmlBeanFactory(r);
    EmpDao dao=(EmpDao)factory.getBean("edao");
    dao.save(new Emp(23,"sonoo",50000));
  }
}