Commons DBUtils - classe BeanListHandler

o org.apache.commons.dbutils.BeanListHandleré a implementação da interface ResultSetHandler e é responsável por converter as linhas ResultSet em lista de Java Bean. Esta classe é thread-safe.

Declaração de Classe

A seguir está a declaração para a classe org.apache.commons.dbutils.BeanListHandler -

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

Uso

  • Step 1 - Crie um objeto de conexão.

  • Step 2 - Obtenha a implementação de ResultSetHandler como objeto BeanListHandler.

  • Step 3 - Passe resultSetHandler para o objeto QueryRunner e faça operações de banco de dados.

Exemplo

O exemplo a seguir demonstrará como ler uma lista de registros usando a classe BeanListHandler. Leremos os registros disponíveis na Tabela de funcionários e mapeá-los para uma lista de beans de funcionários.

Sintaxe

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

Onde,

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

  • queryRunner - Objeto QueryRunner para ler objetos de funcionários do banco de dados.

Para entender os conceitos mencionados acima relacionados aos DBUtils, vamos escrever um exemplo que irá executar uma consulta de leitura. Para escrever nosso exemplo, vamos criar um aplicativo de amostra.

Degrau Descrição
1 Atualize o arquivo MainApp.java criado no capítulo DBUtils - Primeiro Aplicativo .
2 Compile e execute o aplicativo conforme explicado a seguir.

A seguir está o conteúdo do 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 seguir está o conteúdo do MainApp.java Arquivo.

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);
      }        
   }
}

Quando terminar de criar os arquivos de origem, vamos executar o aplicativo. Se tudo estiver bem com seu aplicativo, ele imprimirá a seguinte mensagem.

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