Commons DBUtils - BeanListHandler-Klasse

Das org.apache.commons.dbutils.BeanListHandlerist die Implementierung der ResultSetHandler-Schnittstelle und ist dafür verantwortlich, die ResultSet-Zeilen in eine Liste von Java Bean zu konvertieren. Diese Klasse ist threadsicher.

Klassenerklärung

Es folgt die Deklaration für die Klasse org.apache.commons.dbutils.BeanListHandler -

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

Verwendung

  • Step 1 - Erstellen Sie ein Verbindungsobjekt.

  • Step 2 - Holen Sie sich die Implementierung von ResultSetHandler als BeanListHandler-Objekt.

  • Step 3 - Übergeben Sie resultSetHandler an das QueryRunner-Objekt und führen Sie Datenbankoperationen durch.

Beispiel

Das folgende Beispiel zeigt, wie eine Liste von Datensätzen mit der BeanListHandler-Klasse gelesen wird. Wir lesen die verfügbaren Datensätze in der Employees Table und ordnen sie der Liste der Employee Beans zu.

Syntax

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

Wo,

  • resultHandler - BeanListHandler-Objekt zum Zuordnen von Ergebnismengen zur Liste der Mitarbeiterobjekte.

  • queryRunner - QueryRunner-Objekt zum Lesen des Mitarbeiterobjekts aus der Datenbank.

Um die oben genannten Konzepte in Bezug auf DBUtils zu verstehen, schreiben wir ein Beispiel, in dem eine Leseabfrage ausgeführt wird. Um unser Beispiel zu schreiben, erstellen wir eine Beispielanwendung.

Schritt Beschreibung
1 Aktualisieren Sie die Datei MainApp.java, die unter Kapitel DBUtils - Erste Anwendung erstellt wurde .
2 Kompilieren Sie die Anwendung und führen Sie sie wie unten erläutert aus.

Es folgt der Inhalt der 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;
   }
}

Es folgt der Inhalt der MainApp.java Datei.

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

Wenn Sie mit dem Erstellen der Quelldateien fertig sind, lassen Sie uns die Anwendung ausführen. Wenn mit Ihrer Anwendung alles in Ordnung ist, wird die folgende Meldung gedruckt.

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