Primavera – ResultSetExtractor

ResultSetExtractor es una interfaz que se utiliza para obtener los registros de la base de datos. Es una interfaz de devolución de llamada que utiliza el método query() de JDBC Template donde necesitamos pasar la instancia de ResultSetExtractor para obtener los datos.

Sintaxis del método query() de ResultSetExtractor:

public T query(String sqlQuery, ResultSetExtractor<T> resultSetExtractor)

Para obtener los datos mediante ResultSetExtractor, debemos implementar la interfaz de ResultSetExtractor y proporcionar la definición de su método. Tiene un solo método. es decir, extractData() que toma una instancia de ResultSet como argumento y devuelve la lista.

Sintaxis del método extractData():

public T extractData(ResultSet resultSet) throws SQL Exception, DataAccessException

Ejemplo

En este ejemplo, extraeremos todos los registros de una tabla de Estudiante usando ResultSetExtractor. Para este tutorial, usaremos el siguiente esquema para la tabla Student.

Student(id INT, name VARCHAR(45), department VARCHAR(45))

Implementación paso a paso:

Paso 1: Crear tabla

En este paso, crearemos una tabla de Estudiantes para almacenar la información de los estudiantes. Para este tutorial, asumiremos que ha creado la siguiente tabla en su base de datos.

CREATE TABLE STUDENT(
id INT,
name VARCHAR(45),
department VARCHAR(45));

Después de crear la tabla, insertaremos los siguientes datos en nuestra tabla.

INSERT INTO STUDENT VALUES(1, "geek", "computer science");

Paso 2: Agregar dependencias

En este paso, agregaremos las dependencias de maven a nuestra aplicación. Agregue las siguientes dependencias a su pom.xml 

XML

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.geeksforgeeks</groupId>
  <artifactId>ResultSetExtractorExample</artifactId>
  <version>0.0.1-SNAPSHOT</version> 
   
  <dependencies>
     
          <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.3.16</version>
        </dependency>
         
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
        <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.0.8.RELEASE</version>
        </dependency>
 
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.44</version>
        </dependency>
 
  </dependencies>
 
</project>

Paso 3: crea una clase modelo

Ahora, crearemos una clase modelo para nuestros estudiantes. Esta clase tendrá id, nombre y departamento de variables de tres miembros. También definiremos su método getters y setters junto con el método toString().

Java

public class Student {
   
    // Member variables
    private int id;
    private String name;
    private String department;
     
    // Getters and Setters method
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getDepartment() {
        return department;
    }
    public void setDepartment(String department) {
        this.department = department;
    }
     
    // toString() method
    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + ", department=" + department + "]";
    }   
}

Paso 4: Cree una interfaz Dao

Ahora, crearemos una interfaz y la llamaremos StudentDao , que usaremos para acceder a los datos de la base de datos de almacenamiento de datos. Necesitamos definir el método getAllStudentDetails() que devolverá todos los detalles del estudiante.

Java

import java.util.List;
 
import com.geeksforgeeks.model.Student;
 
public interface StudentDao {
    // This method will return all
    // the details of the students
    public List<Student> getAllStudentDetails();
 
}

Paso 5: Cree una clase de implementación para la interfaz Dao

En este paso, crearemos una clase de implementación StudentDaoImpl.java . Esta clase implementa la interfaz StudentDao y proporciona la definición del método getAllStudentDetails() de la interfaz StudentDao. En esta clase, también implementaremos la interfaz ResultSetExtractor y proporcionaremos la definición de su método extractData()

Java

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
 
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.ResultSetExtractor;
 
import com.geeksforgeeks.model.Student;
 
public class StudentDaoImpl implements StudentDao{
     
    // Defining JdbcTemplate as member variable in order
    // to use the query() method of the JdbcTemplate's class
    private JdbcTemplate jdbcTemplate;
     
    public JdbcTemplate getJdbcTemplate() {
        return jdbcTemplate;
    }
 
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
 
    // This method will return the list
    // of all the details of student
    public List<Student> getAllStudentDetails() {
         
        // Implementation of ResultSetExtractor interface
        return jdbcTemplate.query("SELECT * FROM student", new ResultSetExtractor<List<Student>>() {
             
            // extractData() is ResultSetExtractor
            // interface's method
            public List<Student> extractData(ResultSet rs) throws SQLException, DataAccessException {
                List<Student> studentDetailList = new ArrayList<Student>();
                while(rs.next()) {
                    Student student = new Student();
                    // 1, 2 and 3 are the indices of the data present
                    // in the database respectively
                    student.setId(rs.getInt(1));
                    student.setName(rs.getString(2));
                    student.setDepartment(rs.getString(3));
                    studentDetailList.add(student);
                }
                return studentDetailList;
            }
             
        });
    }
}

Paso 6: Configuración de Bean

En este paso, crearemos el archivo de configuración Spring y lo llamaremos application-contex.xml . Configuraremos nuestros beans y usaremos el atributo de método de fábrica para la creación de beans. Para realizar una conexión a la base de datos, necesitamos la siguiente información: nombre de usuario, contraseña, conexión a la base de datos, URL y el nombre de la clase del controlador. Toda esta información está contenida en la clase DriverManagerDataSource , tiene el método getConnection() que devuelve una conexión de tipo java. Usamos la instancia de JdbcTemplate en nuestra clase StudentDao y la pasamos usando el método de inyección setter. 

Nota : en el contexto de la aplicación, debe definir la ruta completa de su clase dao

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" 
    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="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
        <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
        <property name="url" value="jdbc:mysql://localhost:3306/student_db?autoReconnect=true&useSSL=false" /> 
        <property name="username" value="root" /> 
        <property name="password" value="root" /> 
    </bean> 
       
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> 
        <property name="dataSource" ref="dataSource"></property> 
    </bean> 
   
    <bean id="studentDao" class="com.geeksforgeeks.dao.StudentDaoImpl"> 
        <property name="jdbcTemplate" ref="jdbcTemplate"></property> 
    </bean> 
   
</beans>

Paso 7: Creando Clase de Utilidades

Ahora, crearemos una clase de utilidad para probar nuestra aplicación. Para esto, cree una nueva clase y asígnele el nombre TestResultSetExtractor.java y agregue el siguiente código.

Java

import java.util.List;
 
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
import com.geeksforgeeks.dao.StudentDaoImpl;
import com.geeksforgeeks.model.Student;
 
public class TestResultSetExtractor {
 
    public static void main(String[] args) {
         
        // Reading the application-context file using
        // class path of spring context xml file
        AbstractApplicationContext context = new ClassPathXmlApplicationContext("application-context.xml");
         
        // Spring check the blueprint for studentDao bean
        // from application-context.xml file and return it
        StudentDaoImpl studentDaoImpl = (StudentDaoImpl)context.getBean("studentDao");
         
        // Getting student data
        List<Student> studentDetailList = studentDaoImpl.getAllStudentDetails();
         
        for(Student index : studentDetailList) {
            System.out.println(index);
        }
    }
}

Paso 8: Salida

Ahora ejecutaremos nuestra aplicación.

Output

Producción

Publicación traducida automáticamente

Artículo escrito por ankur035 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *