Dbutils 简明教程

BeanListHandler Class

org.apache.commons.dbutils.BeanListHandler 是 ResultSetHandler 接口的实现,负责将 ResultSet 行转换为 Java Bean 列表。该类是线程安全的。

The org.apache.commons.dbutils.BeanListHandler is the implementation of ResultSetHandler interface and is responsible to convert the ResultSet rows into list of Java Bean. This class is thread safe.

Class Declaration

以下是 org.apache.commons.dbutils.BeanListHandler 的声明:

Following is the declaration for org.apache.commons.dbutils.BeanListHandler class −

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

Usage

  1. Step 1 − Create a connection object.

  2. Step 2 − Get implementation of ResultSetHandler as BeanListHandler object.

  3. Step 3 − Pass resultSetHandler to QueryRunner object, and make database operations.

Example

以下示例将演示如何使用 BeanListHandler 类读取记录列表。我们将读取 Employees 表中可用的记录,并将其映射到 Employee bean 列表中。

Following example will demonstrate how to read a list of records using BeanListHandler class. We’ll read available records in Employees Table and map them to list of Employee beans.

Syntax

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

其中,

Where,

  1. resultHandler − BeanListHandler object to map result sets to list of Employee objects.

  2. queryRunner − QueryRunner object to read employee object from database.

为了理解上述与 DBUtils 相关的概念,让我们编写一个将运行读取查询的示例。为了编写我们的示例,让我们创建一个示例应用程序。

To understand the above-mentioned concepts related to DBUtils, let us write an example which will run a read query. To write our example, let us create a sample application.

Step

Description

1

Update the file MainApp.java created under chapter DBUtils - First Application.

2

Compile and run the application as explained below.

以下是 Employee.java 的内容。

Following is the content of the 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;
   }
}

以下是 MainApp.java 文件的内容。

Following is the content of the MainApp.java file.

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

一旦你创建好源文件,让我们运行应用程序。如果你的应用程序没有问题,它将打印以下消息。

Once you are done creating the source files, let us run the application. If everything is fine with your application, it will print the following message.

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