NamedParameterJdbcTemplate (clase)
los org.springframework.jdbc.core.NamedParameterJdbcTemplateclass es una clase de plantilla con un conjunto básico de operaciones JDBC, lo que permite el uso de parámetros con nombre en lugar del tradicional '?' marcadores de posición. Esta clase delega a un JdbcTemplate envuelto una vez que la sustitución de los parámetros con nombre al estilo JDBC '?' los marcadores de posición se realizan en el momento de la ejecución. También permite expandir una lista de valores al número apropiado de marcadores de posición.
Declaración de interfaz
A continuación se muestra la declaración de org.springframework.jdbc.core.NamedParameterJdbcTemplate clase -
public class NamedParameterJdbcTemplate
extends Object
implements NamedParameterJdbcOperations
Sintaxis
MapSqlParameterSource in = new MapSqlParameterSource();
in.addValue("id", id);
in.addValue("description", new SqlLobValue(description, new DefaultLobHandler()), Types.CLOB);
String SQL = "update Student set description = :description where id = :id";
NamedParameterJdbcTemplate jdbcTemplateObject = new NamedParameterJdbcTemplate(dataSource);
jdbcTemplateObject.update(SQL, in);
Dónde,
in - Objeto SqlParameterSource para pasar un parámetro para actualizar una consulta.
SqlLobValue - Objeto para representar un parámetro de valor SQL BLOB / CLOB.
jdbcTemplateObject - Objeto NamedParameterJdbcTemplate para actualizar el objeto del estudiante en la base de datos.
Para comprender los conceptos mencionados anteriormente relacionados con Spring JDBC, escribamos un ejemplo que actualizará una consulta. Para escribir nuestro ejemplo, tengamos un IDE de Eclipse en funcionamiento y usemos los siguientes pasos para crear una aplicación Spring.
Paso | Descripción |
---|---|
1 | Actualice el proyecto que Student creó en el capítulo Spring JDBC - Primera aplicación . |
2 | Actualice la configuración del bean y ejecute la aplicación como se explica a continuación. |
A continuación se muestra el contenido del archivo de interfaz del objeto de acceso a datos StudentDAO.java.
package com.tutorialspoint;
import java.util.List;
import javax.sql.DataSource;
public interface StudentDAO {
/**
* This is the method to be used to initialize
* database resources ie. connection.
*/
public void setDataSource(DataSource ds);
/**
* This is the method to be used to update
* a record into the Student table.
*/
public void updateDescription(Integer id, String description);
}
A continuación se muestra el contenido de la Student.java archivo.
package com.tutorialspoint;
public class Student {
private Integer age;
private String name;
private Integer id;
private String description;
public void setAge(Integer age) {
this.age = age;
}
public Integer getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getId() {
return id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
A continuación se muestra el contenido de la StudentMapper.java archivo.
package com.tutorialspoint;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.springframework.jdbc.core.RowMapper;
public class StudentMapper implements RowMapper<Student> {
public Student mapRow(ResultSet rs, int rowNum) throws SQLException {
Student student = new Student();
student.setId(rs.getInt("id"));
student.setName(rs.getString("name"));
student.setAge(rs.getInt("age"));
student.setDescription(rs.getString("description"));
return student;
}
}
A continuación se muestra el archivo de clase de implementación StudentJDBCTemplate.java para la interfaz DAO definida StudentDAO.
package com.tutorialspoint;
import java.util.List;
import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.core.simple.SimpleJdbcCall;
import org.springframework.jdbc.core.support.SqlLobValue;
import org.springframework.jdbc.support.lob.DefaultLobHandler;
import java.io.ByteArrayInputStream;
import java.sql.Types;
public class StudentJDBCTemplate implements StudentDAO {
private DataSource dataSource;
private JdbcTemplate jdbcTemplateObject;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public void updateDescription(Integer id, String description) {
MapSqlParameterSource in = new MapSqlParameterSource();
in.addValue("id", id);
in.addValue("description", new SqlLobValue(
description, new DefaultLobHandler()), Types.CLOB);
String SQL = "update Student set description = :description where id = :id";
NamedParameterJdbcTemplate jdbcTemplateObject =
new NamedParameterJdbcTemplate(dataSource);
jdbcTemplateObject.update(SQL, in);
System.out.println("Updated Record with ID = " + id );
}
}
A continuación se muestra el contenido de la MainApp.java archivo.
package com.tutorialspoint;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.tutorialspoint.StudentJDBCTemplate;
public class MainApp {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
StudentJDBCTemplate studentJDBCTemplate =
(StudentJDBCTemplate)context.getBean("studentJDBCTemplate");
studentJDBCTemplate.updateDescription(1,
"This can be a very long text upto 4 GB of size.");
}
}
A continuación se muestra el archivo de configuración Beans.xml.
<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns = "http://www.springframework.org/schema/beans"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd ">
<!-- Initialization for data source -->
<bean id = "dataSource"
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 = "admin"/>
</bean>
<!-- Definition for studentJDBCTemplate bean -->
<bean id = "studentJDBCTemplate"
class = "com.tutorialspoint.StudentJDBCTemplate">
<property name = "dataSource" ref = "dataSource" />
</bean>
</beans>
Una vez que haya terminado de crear los archivos de configuración de fuente y bean, ejecutemos la aplicación. Si todo está bien con su aplicación, imprimirá el siguiente mensaje.
Updated Record with ID = 1
Puede comprobar la descripción almacenada consultando la base de datos.