English 中文(简体)
DBUtils - Custom Handler
  • 时间:2024-09-17

Apache Commons DBUtils - Custom Handler


Previous Page Next Page  

We can create our own custom handler by implementing ResultSetHandler interface or by extending any of the existing implementation of ResultSetHandler. In the example given below, we ve created a Custom Handler, EmployeeHandler by extending BeanHandler class.

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 apppcation.

Step Description
1 Update the file MainApp.java created under chapter DBUtils - First Apppcation.
2 Compile and run the apppcation as explained below.

Following is the content of the Employee.java.


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

Following is the content of the EmployeeHandler.java file.


import java.sql.ResultSet;
import java.sql.SQLException;

import org.apache.commons.dbutils.handlers.BeanHandler;

pubpc class EmployeeHandler extends BeanHandler<Employee> {

   pubpc EmployeeHandler() {
      super(Employee.class);
   }

   @Override
   pubpc Employee handle(ResultSet rs) throws SQLException {
      Employee employee = super.handle(rs);
      employee.setName(employee.getFirst() +", " + employee.getLast());
      return employee;
   }
}

Following is the content of the MainApp.java file.


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

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

pubpc 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";

   pubpc static void main(String[] args) throws SQLException {
      Connection conn = null;
      QueryRunner queryRunner = new QueryRunner();
      DbUtils.loadDriver(JDBC_DRIVER);                 
      conn = DriverManager.getConnection(DB_URL, USER, PASS);        
      EmployeeHandler employeeHandler = new EmployeeHandler();

      try {
         Employee emp = queryRunner.query(conn,
         "SELECT * FROM employees WHERE first=?", employeeHandler, "Sumit");
         
         //Display values
         System.out.print("ID: " + emp.getId());
         System.out.print(", Age: " + emp.getAge());
         System.out.print(", Name: " + emp.getName());
      } finally {
         DbUtils.close(conn);
      }        
   }
}

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


ID: 103, Age: 28, Name: Sumit, Mittal
Advertisements