Commons DBUtils - Clase BeanListHandler

los org.apache.commons.dbutils.BeanListHandleres la implementación de la interfaz ResultSetHandler y es responsable de convertir las filas de ResultSet en una lista de Java Bean. Esta clase es segura para subprocesos.

Declaración de clase

A continuación se muestra la declaración de la clase org.apache.commons.dbutils.BeanListHandler:

public class BeanListHandler<T>
   extends Object implements ResultSetHandler<List<T>>

Uso

  • Step 1 - Crea un objeto de conexión.

  • Step 2 - Obtener la implementación de ResultSetHandler como objeto BeanListHandler.

  • Step 3 - Pase resultSetHandler al objeto QueryRunner y realice operaciones de base de datos.

Ejemplo

El siguiente ejemplo demostrará cómo leer una lista de registros usando la clase BeanListHandler. Leeremos los registros disponibles en la tabla de empleados y los asignaremos a la lista de beans de empleado.

Sintaxis

List<Employee> empList = queryRunner.query(conn, "SELECT * FROM employees", resultHandler);

Dónde,

  • resultHandler - Objeto BeanListHandler para mapear conjuntos de resultados a la lista de objetos Employee.

  • queryRunner - Objeto QueryRunner para leer el objeto empleado de la base de datos.

Para comprender los conceptos mencionados anteriormente relacionados con DBUtils, escribamos un ejemplo que ejecutará una consulta de lectura. Para escribir nuestro ejemplo, creemos una aplicación de muestra.

Paso Descripción
1 Actualice el archivo MainApp.java creado en el capítulo DBUtils - Primera aplicación .
2 Compile y ejecute la aplicación como se explica a continuación.

A continuación se muestra el contenido de la Employee.java.

public class Employee {
   private int id;
   private int age;
   private String first;
   private String last;
   public int getId() {
      return id;
   }
   public void setId(int id) {
      this.id = id;
   }
   public int getAge() {
      return age;
   }
   public void setAge(int age) {
      this.age = age;
   }
   public String getFirst() {
      return first;
   }
   public void setFirst(String first) {
      this.first = first;
   }
   public String getLast() {
      return last;
   }
   public void setLast(String last) {
      this.last = last;
   }
}

A continuación se muestra el contenido de la MainApp.java archivo.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;

import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

public class MainApp {
   // JDBC driver name and database URL
   static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
   static final String DB_URL = "jdbc:mysql://localhost:3306/emp";

   //  Database credentials
   static final String USER = "root";
   static final String PASS = "admin";

   public static void main(String[] args) throws SQLException {
      Connection conn = null;
      QueryRunner queryRunner = new QueryRunner();
      
      //Step 1: Register JDBC driver
      DbUtils.loadDriver(JDBC_DRIVER);

      //Step 2: Open a connection
      System.out.println("Connecting to database...");
      conn = DriverManager.getConnection(DB_URL, USER, PASS);

      //Step 3: Create a ResultSet Handler to handle List of Employee Beans
      ResultSetHandler<List<Employee>> resultHandler = new BeanListHandler<Employee>(Employee.class);

      try {
         List<Employee> empList = queryRunner.query(conn, "SELECT * FROM employees", resultHandler);
         for(Employee emp: empList ) {
            
            //Display values
            System.out.print("ID: " + emp.getId());
            System.out.print(", Age: " + emp.getAge());
            System.out.print(", First: " + emp.getFirst());
            System.out.println(", Last: " + emp.getLast());
         }           
      } finally {
         DbUtils.close(conn);
      }        
   }
}

Una vez que haya terminado de crear los archivos fuente, permítanos ejecutar la aplicación. Si todo está bien con su aplicación, imprimirá el siguiente mensaje.

ID: 100, Age: 18, First: Zara, Last: Ali
ID: 101, Age: 25, First: Mahnaz, Last: Fatma
ID: 102, Age: 30, First: Zaid, Last: Khan
ID: 103, Age: 28, First: Sumit, Last: Mittal