Apache Commons DBUtils: uso de DataSource

Hasta ahora, usamos el objeto de conexión mientras usamos QueryRunner. También podemos usar la fuente de datos sin problemas. El siguiente ejemplo demostrará cómo leer un registro usando Read query con la ayuda de QueryRunner y datasource. Leeremos un registro de la tabla de empleados.

Sintaxis

QueryRunner queryRunner = new QueryRunner( dataSource );
Employee emp = queryRunner.query("SELECT * FROM employees WHERE first=?", resultHandler, "Sumit");

Dónde,

  • dataSource - Objeto DataSource configurado.

  • resultHandler - Objeto ResultSetHandler para mapear el conjunto de resultados al objeto Empleado.

  • 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 CustomDatasource.java.

import javax.sql.DataSource;
import org.apache.commons.dbcp2.BasicDataSource;

public class CustomDataSource {
   // 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";
   private static DataSource datasource;
   private static final BasicDataSource basicDataSource;

   static {
      basicDataSource = new BasicDataSource();
      basicDataSource.setDriverClassName(JDBC_DRIVER);
      basicDataSource.setUsername(USER);
      basicDataSource.setPassword(PASS);
      basicDataSource.setUrl(DB_URL);
   }

   public static DataSource getInstance() {
      return basicDataSource;
   }
}

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

import java.sql.SQLException;

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

public class MainApp {
   public static void main(String[] args) throws SQLException {    
      
      DbUtils.loadDriver(JDBC_DRIVER);
      QueryRunner run = new QueryRunner(CustomDataSource.getInstance());
      ResultSetHandler<Employee> resultHandler = new BeanHandler<Employee>(Employee.class);

      Employee emp = queryRunner.query("SELECT * FROM employees WHERE id=?",
         resultHandler, 103);
      
      //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());
   }
}

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

ID: 103, Age: 33, First: Sumit, Last: Mittal