Interfaz PreparedStatementSetter
los org.springframework.jdbc.core.PreparedStatementSetterLa interfaz actúa como una interfaz de devolución de llamada general utilizada por la clase JdbcTemplate. Esta interfaz establece valores en un PreparedStatement proporcionado por la clase JdbcTemplate, para cada una de las actualizaciones en un lote utilizando el mismo SQL.
Las implementaciones son responsables de establecer los parámetros necesarios. Ya se habrá proporcionado SQL con marcadores de posición. Es más fácil usar esta interfaz que PreparedStatementCreator. JdbcTemplate creará PreparedStatement, y la devolución de llamada solo será responsable de establecer los valores de los parámetros.
Declaración de interfaz
A continuación se muestra la declaración de la interfaz org.springframework.jdbc.core.PreparedStatementSetter:
public interface PreparedStatementSetter
Uso
Step 1 - Cree un objeto JdbcTemplate utilizando una fuente de datos configurada.
Step 2 - Utilice los métodos del objeto JdbcTemplate para realizar operaciones de base de datos mientras pasa el objeto PreparedStatementSetter para reemplazar los marcadores de posición en la consulta.
Ejemplo
El siguiente ejemplo demostrará cómo leer una consulta usando la clase JdbcTemplate y la interfaz PreparedStatementSetter. Leeremos el registro disponible de un estudiante en Student Table.
Sintaxis
final String SQL = "select * from Student where id = ? ";
List <Student> students = jdbcTemplateObject.query(
SQL, new PreparedStatementSetter() {
public void setValues(PreparedStatement preparedStatement) throws SQLException {
preparedStatement.setInt(1, id);
}
},
new StudentMapper());
Dónde,
SQL - Seleccionar consulta para leer alumnos.
jdbcTemplateObject - Objeto StudentJDBCTemplate para leer el objeto del alumno de la base de datos.
PreparedStatementSetter - Objeto PreparedStatementSetter para establecer parámetros en la consulta.
StudentMapper - StudentMapper es un objeto RowMapper para asignar cada registro obtenido a un objeto de estudiante.
Para comprender los conceptos mencionados anteriormente relacionados con Spring JDBC, escribamos un ejemplo que seleccionará 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 list down
* a record from the Student table corresponding
* to a passed student id.
*/
public Student getStudent(Integer id);
}
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;
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;
}
}
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"));
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;
public class StudentJDBCTemplate implements StudentDAO {
private DataSource dataSource;
private JdbcTemplate jdbcTemplateObject;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
this.jdbcTemplateObject = new JdbcTemplate(dataSource);
}
public Student getStudent(final Integer id) {
final String SQL = "select * from Student where id = ? ";
List <Student> students = jdbcTemplateObject.query(
SQL, new PreparedStatementSetter() {
public void setValues(PreparedStatement preparedStatement) throws SQLException {
preparedStatement.setInt(1, id);
}
},
new StudentMapper());
return students.get(0);
}
}
A continuación se muestra el contenido de la MainApp.java archivo.
package com.tutorialspoint;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainApp {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
StudentJDBCTemplate studentJDBCTemplate =
(StudentJDBCTemplate)context.getBean("studentJDBCTemplate");
Student student = studentJDBCTemplate.getStudent(1);
System.out.print("ID : " + student.getId() );
System.out.println(", Age : " + student.getAge());
}
}
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.
ID : 1, Age : 17