Apache Commons DBUtils - Kurzanleitung

Die Apache Commons DbUtils-Bibliothek besteht aus einer relativ kleinen Gruppe von Klassen, die die Verarbeitung von JDBC-Aufrufen ohne Ressourcenverlust vereinfachen und saubereren Code bieten sollen. Da die Bereinigung von JDBC-Ressourcen ziemlich langwierig und fehleranfällig ist, helfen DBUtils-Klassen dabei, den Code der Kesselplatte zu abstrahieren, sodass sich die Entwickler nur auf datenbankbezogene Vorgänge konzentrieren können.

Vorteile von DBUtils

Die Vorteile der Verwendung von Apache Commons DBUtils werden nachfolgend erläutert:

  • No Resource Leakage - DBUtils-Klassen stellen sicher, dass kein Ressourcenverlust auftritt.

  • Clean & Clear code - DBUtils-Klassen bieten sauberen und klaren Code für die Ausführung der Datenbankoperationen, ohne dass ein Code zur Bereinigung oder Verhinderung von Ressourcenlecks geschrieben werden muss.

  • Bean Mapping - Die DBUtils-Klasse unterstützt das automatische Auffüllen von Javabeans aus einer Ergebnismenge.

DBUtils Design Principles

Die Entwurfsprinzipien von Apache Commons DBUtils lauten wie folgt:

  • Small - Die DBUtils-Bibliothek ist sehr klein und enthält weniger Klassen, sodass sie leicht zu verstehen und zu verwenden ist.

  • Transparent- Die DBUtils-Bibliothek leistet hinter den Kulissen nicht viel Arbeit. Es nimmt einfach eine Abfrage entgegen und wird ausgeführt.

  • Fast - DBUtils-Bibliotheksklassen erstellen nicht viele Hintergrundobjekte und sind bei der Ausführung von Datenbankoperationen recht schnell.

Um mit der Entwicklung mit DBUtils zu beginnen, sollten Sie Ihre DBUtils-Umgebung einrichten, indem Sie die folgenden Schritte ausführen. Wir gehen davon aus, dass Sie auf einer Windows-Plattform arbeiten.

Installieren Sie Java

Installieren Sie das J2SE Development Kit 5.0 (JDK 5.0) von der offiziellen Java-Site .

Stellen Sie sicher, dass die folgenden Umgebungsvariablen wie unten beschrieben festgelegt sind:

  • JAVA_HOME - Diese Umgebungsvariable sollte auf das Verzeichnis verweisen, in dem Sie das JDK installiert haben, z. B. C: \ Programme \ Java \ jdk1.5.0.

  • CLASSPATH - Für diese Umgebungsvariable sollten geeignete Pfade festgelegt sein, z. B. C: \ Programme \ Java \ jdk1.5.0_20 \ jre \ lib.

  • PATH - Diese Umgebungsvariable sollte auf den entsprechenden JRE-Bin verweisen, z. B. C: \ Programme \ Java \ jre1.5.0_20 \ bin.

Es ist möglich, dass Sie diese Variablen bereits festgelegt haben, aber nur um sicherzugehen, dass Sie Folgendes überprüfen.

  • Gehen Sie zur Systemsteuerung und doppelklicken Sie auf System. Wenn Sie Windows XP verwenden, müssen Sie möglicherweise Leistung und Wartung öffnen, bevor das Systemsymbol angezeigt wird.

  • Gehen Sie zur Registerkarte Erweitert und klicken Sie auf Umgebungsvariablen.

  • Überprüfen Sie nun, ob alle oben genannten Variablen richtig eingestellt sind.

Datenbank installieren

Das Wichtigste, was Sie benötigen, ist natürlich eine tatsächlich laufende Datenbank mit einer Tabelle, die Sie abfragen und ändern können.

Installieren Sie eine Datenbank, die für Sie am besten geeignet ist. Sie können viele Möglichkeiten haben und am häufigsten sind -

  • MySQL DB:MySQL ist eine Open Source Datenbank. Sie können es von der offiziellen MySQL-Website herunterladen . Wir empfehlen, die vollständige Windows-Installation herunterzuladen.

    Laden Sie außerdem MySQL Administrator und MySQL Query Browser herunter und installieren Sie sie . Dies sind GUI-basierte Tools, die Ihre Entwicklung erheblich vereinfachen.

    Laden Sie abschließend MySQL Connector / J (den MySQL JDBC-Treiber) herunter und entpacken Sie es in einem praktischen Verzeichnis. Für dieses Tutorial wird davon ausgegangen, dass Sie den Treiber unter C: \ Programme \ MySQL \ mysql-connector-java-5.1.8 installiert haben.

    Setzen Sie dementsprechend die Variable CLASSPATH auf C: \ Programme \ MySQL \ mysql-connector-java-5.1.8 \ mysql-connector-java-5.1.8-bin.jar. Ihre Treiberversion kann je nach Installation variieren.

  • PostgreSQL DB:PostgreSQL ist eine Open Source Datenbank. Sie können es von der offiziellen PostgreSQL-Site herunterladen .

    Die Postgres-Installation enthält ein GUI-basiertes Verwaltungstool namens pgAdmin III. JDBC-Treiber sind ebenfalls Teil der Installation.

  • Oracle DB- Oracle DB ist eine kommerzielle Datenbank, die von Oracle verkauft wird. Wir gehen davon aus, dass Sie über die erforderlichen Distributionsmedien verfügen, um es zu installieren.

    Die Oracle-Installation enthält ein GUI-basiertes Verwaltungstool namens Enterprise Manager. JDBC-Treiber sind ebenfalls Teil der Installation.

Installieren Sie Datenbanktreiber

Das neueste JDK enthält einen JDBC-ODBC-Brückentreiber, der Programmierern, die die JDBC-API verwenden, die meisten ODBC-Treiber (Open Database Connectivity) zur Verfügung stellt.

Heute liefern die meisten Datenbankanbieter geeignete JDBC-Treiber zusammen mit der Datenbankinstallation. Sie sollten sich also keine Sorgen um diesen Teil machen.

Datenbankanmeldeinformationen festlegen

Für dieses Tutorial verwenden wir die MySQL-Datenbank. Wenn Sie eine der oben genannten Datenbanken installieren, wird deren Administrator-ID auf festgelegtroot und bietet die Möglichkeit, ein Passwort Ihrer Wahl festzulegen.

Mit der Root-ID und dem Kennwort können Sie entweder eine andere Benutzer-ID und ein Kennwort erstellen oder die Root-ID und das Kennwort für Ihre JDBC-Anwendung verwenden.

Es gibt verschiedene Datenbankvorgänge wie das Erstellen und Löschen von Datenbanken, für die eine Administrator-ID und ein Kennwort erforderlich sind.

Für den Rest des JDBC-Tutorials würden wir MySQL Database mit verwenden username als ID und password als Passwort.

Wenn Sie nicht über ausreichende Berechtigungen zum Erstellen neuer Benutzer verfügen, können Sie Ihren Datenbankadministrator (DBA) bitten, eine Benutzer-ID und ein Kennwort für Sie zu erstellen.

Datenbank erstellen

So erstellen Sie die emp Datenbank, verwenden Sie die folgenden Schritte -

Schritt 1

Öffne ein Command Prompt und wechseln Sie wie folgt in das Installationsverzeichnis -

C:\>
C:\>cd Program Files\MySQL\bin
C:\Program Files\MySQL\bin>

Note: Der Weg zu mysqld.exekann je nach Installationsort von MySQL auf Ihrem System variieren. Sie können auch die Dokumentation zum Starten und Stoppen Ihres Datenbankservers überprüfen.

Schritt 2

Starten Sie den Datenbankserver, indem Sie den folgenden Befehl ausführen, falls er bereits nicht ausgeführt wird.

C:\Program Files\MySQL\bin>mysqld
C:\Program Files\MySQL\bin>

Schritt 3

Erstellen Sie die emp Datenbank durch Ausführen des folgenden Befehls -

C:\Program Files\MySQL\bin> mysqladmin create emp -u root -p
Enter password: ********
C:\Program Files\MySQL\bin>

Tabelle erstellen

So erstellen Sie die Employees Tabelle in der emp-Datenbank, führen Sie die folgenden Schritte aus:

Schritt 1

Öffne ein Command Prompt und wechseln Sie wie folgt in das Installationsverzeichnis -

C:\>
C:\>cd Program Files\MySQL\bin
C:\Program Files\MySQL\bin>

Schritt 2

Melden Sie sich wie folgt bei der Datenbank an -

C:\Program Files\MySQL\bin>mysql -u root -p
Enter password: ********
mysql>

Schritt 3

Erstellen Sie die Tabelle Employee wie folgt -

mysql> use emp;
mysql> create table Employees
    -> (
    -> id int not null,
    -> age int not null,
    -> first varchar (255),
    -> last varchar (255)
    -> );
Query OK, 0 rows affected (0.08 sec)
mysql>

Datensätze erstellen

Schließlich erstellen Sie einige Datensätze in der Employee-Tabelle wie folgt:

mysql> INSERT INTO Employees VALUES (100, 18, 'Zara', 'Ali');
Query OK, 1 row affected (0.05 sec)

mysql> INSERT INTO Employees VALUES (101, 25, 'Mahnaz', 'Fatma');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO Employees VALUES (102, 30, 'Zaid', 'Khan');
Query OK, 1 row affected (0.00 sec)

mysql> INSERT INTO Employees VALUES (103, 28, 'Sumit', 'Mittal');
Query OK, 1 row affected (0.00 sec)

mysql>

Lesen Sie das MySQL-Lernprogramm , um ein umfassendes Verständnis der MySQL-Datenbank zu erhalten .

Laden Sie das Commons DBUtils-Archiv herunter

Laden Sie die neueste Version der Apache Common DBUtils-JAR-Datei von commons-dbutils-1.7-bin.zip , MySQL-Connector mysql-connector-java-5.1.28-bin.jar , Apache Commons DBCP commons-dbcp2-2.1.1-bin herunter. zip , Apache Commons Pool commons-pool2-2.4.3-bin.zip und Apache Commons Logging commons-logging-1.2-bin.zip . Zum Zeitpunkt des Schreibens dieses Tutorials haben wir commons-dbutils-1.7-bin.zip , mysql-connector-java-5.1.28-bin.jar , commons-dbcp2-2.1.1-bin.zip , commons-pool2 heruntergeladen -2.4.3-bin.zip , commons-logging-1.2-bin.zip und kopierte es in den Ordner C: \> Apache.

Betriebssystem Archivname
Windows commons-dbutils-1.7-bin.zip
Linux commons-dbutils-1.7-bin.tar.gz
Mac commons-dbutils-1.7-bin.tar.gz

Legen Sie die allgemeine DBUtils-Umgebung für Apache fest

Stellen Sie die APACHE_HOMEUmgebungsvariable, die auf den Speicherort des Basisverzeichnisses verweist, in dem Apache jar auf Ihrem Computer gespeichert ist. Angenommen, wir haben commons-dbutils-1.7-bin.zip im Apache-Ordner auf verschiedenen Betriebssystemen wie folgt extrahiert.

Betriebssystem Ausgabe
Windows Setzen Sie die Umgebungsvariable APACHE_HOME auf C: \ Apache
Linux export APACHE_HOME = / usr / local / Apache
Mac export APACHE_HOME = / Library / Apache

Setzen Sie die Variable CLASSPATH

Stellen Sie die CLASSPATHUmgebungsvariable, die auf den Common IO-JAR-Speicherort verweist. Angenommen, Sie haben commons-dbutils-1.7-bin.zip wie folgt im Apache-Ordner auf verschiedenen Betriebssystemen gespeichert.

Betriebssystem Ausgabe
Windows Setzen Sie die Umgebungsvariable CLASSPATH auf% CLASSPATH%;% APACHE_HOME% \ commons-dbutils-1.7.jar; mysql-connector-java-5.1.28.jar; commons-dbcp2-2.1.1.jar; commons-pool2-2.4. 3.jar; commons-logging-1.2.jar;
Linux export CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-dbutils-1.7.jar: mysql-connector-java-5.1.28.jar: commons-dbcp2-2.1.1: commons-pool2-2.4.3.jar: commons-logging -1.2.jar.
Mac export CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-dbutils-1.7.jar: mysql-connector-java-5.1.28: commons-dbcp2-2.1.1.jar: commons-pool2-2.4.3.jar; commons-logging -1.2.jar.

Jetzt können Sie mit DBUtils experimentieren. Im nächsten Kapitel finden Sie ein Beispielbeispiel zur DBUtils-Programmierung.

Dieses Kapitel enthält ein Beispiel zum Erstellen einer einfachen JDBC-Anwendung mithilfe der DBUtils-Bibliothek. Dies zeigt Ihnen, wie Sie eine Datenbankverbindung öffnen, eine SQL-Abfrage ausführen und die Ergebnisse anzeigen.

Alle in diesem Vorlagenbeispiel genannten Schritte werden in den folgenden Kapiteln dieses Lernprogramms erläutert.

JDBC-Anwendung erstellen

Die Erstellung einer JDBC-Anwendung umfasst die folgenden sechs Schritte:

  • Import the packages- Erfordert, dass Sie die Pakete enthalten, die die JDBC-Klassen enthalten, die für die Datenbankprogrammierung benötigt werden. Meistens mitimport java.sql.* wird genügen.

  • Register the JDBC driver - Erfordert die Initialisierung eines Treibers, damit Sie einen Kommunikationskanal mit der Datenbank öffnen können.

  • Open a connection - Erfordert die Verwendung der DriverManager.getConnection() Methode zum Erstellen eines Verbindungsobjekts, das eine physische Verbindung mit der Datenbank darstellt.

  • Execute a query - Erfordert die Verwendung eines Objekts vom Typ Anweisung zum Erstellen und Senden einer SQL-Anweisung an die Datenbank.

  • Extract data from result set - Erfordert, dass Sie die entsprechende verwenden ResultSet.getXXX() Methode zum Abrufen der Daten aus der Ergebnismenge.

  • Clean up the environment - Erfordert das explizite Schließen aller Datenbankressourcen, anstatt sich auf die Garbage Collection der JVM zu verlassen.

Beispielcode

Dieses Beispielbeispiel kann als Vorlage dienen, wenn Sie in Zukunft eine eigene JDBC-Anwendung erstellen müssen.

Dieser Beispielcode wurde basierend auf der im vorherigen Kapitel vorgenommenen Umgebung und Datenbankeinrichtung geschrieben.

Kopieren Sie das folgende Beispiel und fügen Sie es in MainApp.java ein. Kompilieren Sie es und führen Sie es wie folgt aus:

MainApp.java

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;

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 Employee Beans
      ResultSetHandler<Employee> resultHandler = new BeanHandler<Employee>(Employee.class);
      
      try {
         Employee emp = queryRunner.query(conn,
            "SELECT * FROM employees WHERE first=?", resultHandler, "Sumit");
         //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);
      }
   }
}

Employee.java

Das Programm ist unten angegeben -

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

Lassen Sie uns nun das obige Beispiel wie folgt zusammenstellen:

C:\>javac MainApp.java Employee.java
C:\>

Wenn du rennst MainApperzeugt es das folgende Ergebnis -

C:\>java MainApp
Connecting to database...
ID: 103, Age: 28, First: Sumit, Last: Mittal
C:\>

Das folgende Beispiel zeigt, wie Sie mithilfe der Einfügeabfrage mithilfe von DBUtils einen Datensatz erstellen. Wir werden einen Datensatz in die Mitarbeitertabelle einfügen.

Syntax

Die Syntax zum Erstellen einer Abfrage ist unten angegeben:

String insertQuery ="INSERT INTO employees(id,age,first,last) VALUES (?,?,?,?)";
int insertedRecords = queryRunner.update(conn, insertQuery,104,30, "Sohan","Kumar");

Wo,

  • insertQuery - Abfrage mit Platzhaltern einfügen.

  • queryRunner - QueryRunner-Objekt zum Einfügen eines Mitarbeiterobjekts in die Datenbank.

Um die oben genannten Konzepte in Bezug auf DBUtils zu verstehen, schreiben wir ein Beispiel, in dem eine Einfügeabfrage 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 org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;

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();
      DbUtils.loadDriver(JDBC_DRIVER);
      conn = DriverManager.getConnection(DB_URL, USER, PASS);
      try {
         int insertedRecords = queryRunner.update(conn,
            "INSERT INTO employees(id,age,first,last) VALUES (?,?,?,?)",
            104,30, "Sohan","Kumar");
         System.out.println(insertedRecords + " record(s) inserted");
      } 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:

1 record(s) inserted.

Das folgende Beispiel zeigt, wie ein Datensatz mithilfe der Leseabfrage mithilfe von DBUtils gelesen wird. Wir werden einen Datensatz aus der Mitarbeitertabelle lesen.

Syntax

Die Syntax für die Leseabfrage wird unten erwähnt -

ResultSetHandler<Employee> resultHandler = new BeanHandler<Employee>(Employee.class);
Employee emp = queryRunner.query(conn, "SELECT * FROM employees WHERE first=?", resultHandler, "Sumit");

Wo,

  • resultHandler - ResultSetHandler-Objekt, um die Ergebnismenge dem Employee-Objekt zuzuordnen.

  • queryRunner - QueryRunner-Objekt zum Lesen eines 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 org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;

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 Employee Beans
      ResultSetHandler<Employee> resultHandler =
         new BeanHandler<Employee>(Employee.class);
      try {
         Employee emp = queryRunner.query(conn,
            "SELECT * FROM employees WHERE id=?", resultHandler, 104);
         //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: 104, Age: 30, First: Sohan, Last: Kumar

Das folgende Beispiel zeigt, wie ein Datensatz mithilfe der Aktualisierungsabfrage mithilfe von DBUtils aktualisiert wird. Wir werden einen Datensatz in der Mitarbeitertabelle aktualisieren.

Syntax

Die Syntax für die Aktualisierungsabfrage lautet wie folgt:

String updateQuery = "UPDATE employees SET age=? WHERE id=?";
int updatedRecords = queryRunner.update(conn, updateQuery, 33,104);

Wo,

  • updateQuery - Aktualisieren Sie die Abfrage mit Platzhaltern.

  • queryRunner - QueryRunner-Objekt zum Aktualisieren des Mitarbeiterobjekts in der Datenbank.

Um die oben genannten Konzepte in Bezug auf DBUtils zu verstehen, schreiben wir ein Beispiel, in dem eine Aktualisierungsabfrage 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 org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;

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();
      DbUtils.loadDriver(JDBC_DRIVER);
      conn = DriverManager.getConnection(DB_URL, USER, PASS);
      try {
         int updatedRecords = queryRunner.update(conn,
            "UPDATE employees SET age=? WHERE id=?", 33,104);
         System.out.println(updatedRecords + " record(s) updated.");
      } 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:

1 record(s) updated.

Das folgende Beispiel zeigt, wie Sie einen Datensatz mithilfe der Löschabfrage mithilfe von DBUtils löschen. Wir werden einen Datensatz in der Mitarbeitertabelle löschen.

Syntax

Die Syntax für die Löschabfrage wird unten erwähnt -

String deleteQuery = "DELETE FROM employees WHERE id=?";
int deletedRecords = queryRunner.delete(conn, deleteQuery, 33,104);

Wo,

  • deleteQuery - DELETE-Abfrage mit Platzhaltern.

  • queryRunner - QueryRunner-Objekt zum Löschen eines Mitarbeiterobjekts in der Datenbank.

Um die oben genannten Konzepte in Bezug auf DBUtils zu verstehen, schreiben wir ein Beispiel, in dem eine Löschabfrage 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 org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;

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();
      DbUtils.loadDriver(JDBC_DRIVER);
      conn = DriverManager.getConnection(DB_URL, USER, PASS);
      try {
         int deletedRecords = queryRunner.update(conn,
            "DELETE from employees WHERE id=?", 104);
         System.out.println(deletedRecords + " record(s) deleted.");
      } 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:

1 record(s) deleted.

Das org.apache.commons.dbutils.QueryRunnerKlasse ist die zentrale Klasse in der DBUtils-Bibliothek. Es führt SQL-Abfragen mit steckbaren Strategien für die Behandlung von ResultSets aus. Diese Klasse ist threadsicher.

Klassenerklärung

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

public class QueryRunner
   extends AbstractQueryRunner

Verwendung

  • Step 1 - Erstellen Sie ein Verbindungsobjekt.

  • Step 2 - Verwenden Sie QueryRunner-Objektmethoden, um Datenbankoperationen durchzuführen.

Beispiel

Das folgende Beispiel zeigt, wie ein Datensatz mit der QueryRunner-Klasse gelesen wird. Wir werden einen der verfügbaren Datensätze in der Mitarbeitertabelle lesen.

Syntax

ResultSetHandler<Employee> resultHandler = new BeanHandler<Employee>(Employee.class);
Employee emp = 
   queryRunner.query(conn, "SELECT * FROM employees WHERE first=?", resultHandler, "Sumit");

Wo,

  • resultHandler - ResultSetHandler-Objekt, um die Ergebnismenge dem Employee-Objekt zuzuordnen.

  • 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 org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;

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 Employee Beans
      ResultSetHandler<Employee> resultHandler = new BeanHandler<Employee>(Employee.class);

      try {
         Employee emp = queryRunner.query(conn,
            "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());
      } 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: 103, Age: 28, First: Sumit, Last: Mittal

Das org.apache.commons.dbutils.AsyncQueryRunnerKlasse hilft bei der Ausführung lang laufender SQL-Abfragen mit asynchroner Unterstützung. Diese Klasse ist threadsicher. Diese Klasse unterstützt dieselben Methoden wie QueryRunner, gibt jedoch aufrufbare Objekte zurück, die später zum Abrufen des Ergebnisses verwendet werden können.

Klassenerklärung

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

public class AsyncQueryRunner
   extends AbstractQueryRunner

Verwendung

  • Step 1 - Erstellen Sie ein Verbindungsobjekt.

  • Step 2 - Verwenden Sie AsyncQueryRunner-Objektmethoden, um Datenbankoperationen durchzuführen.

Beispiel

Das folgende Beispiel zeigt, wie ein Datensatz mithilfe der AsyncQueryRunner-Klasse aktualisiert wird. Wir werden einen der verfügbaren Datensätze in der Mitarbeitertabelle aktualisieren.

Syntax

String updateQuery = "UPDATE employees SET age=? WHERE id=?";
future = asyncQueryRunner.update(conn,
            "UPDATE employees SET age=? WHERE id=?", 33,103);

Wo,

  • updateQuery - Aktualisieren Sie die Abfrage mit Platzhaltern.

  • asyncQueryRunner - asyncQueryRunner-Objekt zum Aktualisieren des Mitarbeiterobjekts in der Datenbank.

  • future - Zukünftiges Objekt, um das Ergebnis später abzurufen.

Um die oben genannten Konzepte für DBUtils zu verstehen, schreiben wir ein Beispiel, in dem eine Aktualisierungsabfrage im asynchronen Modus 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 org.apache.commons.dbutils.AsyncQueryRunner;
import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException; 
import java.util.concurrent.ExecutorCompletionService; 
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; 
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

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, InterruptedException, 
      ExecutionException, TimeoutException {
      Connection conn = null;

      AsyncQueryRunner asyncQueryRunner = new AsyncQueryRunner( Executors.newCachedThreadPool());

      DbUtils.loadDriver(JDBC_DRIVER);       
      conn = DriverManager.getConnection(DB_URL, USER, PASS);
      Future<Integer> future = null;
      try {
         future = asyncQueryRunner.update(conn, 
            "UPDATE employees SET age=? WHERE id=?", 33,103);         
         Integer updatedRecords = future.get(10, TimeUnit.SECONDS);
         System.out.println(updatedRecords + " record(s) updated.");
      } 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.

1 record(s) updated.

Das org.apache.commons.dbutils.ResultSetHandler Die Schnittstelle ist dafür verantwortlich, ResultSets in Objekte zu konvertieren.

Klassenerklärung

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

public interface ResultSetHandler<T>

Verwendung

  • Step 1 - Erstellen Sie ein Verbindungsobjekt.

  • Step 2 - Erstellen Sie die Implementierung von ResultSetHandler.

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

Beispiel

Das folgende Beispiel zeigt, wie ein Datensatz mithilfe der ResultSetHandler-Klasse zugeordnet wird. Wir werden einen der verfügbaren Datensätze in der Mitarbeitertabelle lesen.

Syntax

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

Wo,

  • resultHandler - ResultSetHandler-Objekt, um die Ergebnismenge dem Employee-Objekt zuzuordnen.

  • 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.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.Arrays;

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

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 Employee Beans
      ResultSetHandler<Object[]> handler = new ResultSetHandler<Object[]>() {
         public Object[] handle(ResultSet rs) throws SQLException {
            if (!rs.next()) {
               return null;
            }
            ResultSetMetaData meta = rs.getMetaData();
            int cols = meta.getColumnCount();
            Object[] result = new Object[cols];

            for (int i = 0; i < cols; i++) {
               result[i] = rs.getObject(i + 1);
            }
            return result;
         }
      };

      try {
         Object[] result  = queryRunner.query(conn, "SELECT * FROM employees WHERE id=?",
            handler, 103);
         //Display values
         System.out.print("Result: " + Arrays.toString(result));            
      } 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.

Connecting to database...
Result: [103, 33, Sumit, Mittal]

Das org.apache.commons.dbutils.BeanHandlerist die Implementierung der ResultSetHandler-Schnittstelle und ist dafür verantwortlich, die erste ResultSet-Zeile in eine JavaBean zu konvertieren. Diese Klasse ist threadsicher.

Klassenerklärung

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

public class BeanHandler<T>
   extends Object implements ResultSetHandler<T>

Verwendung

  • Step 1 - Erstellen Sie ein Verbindungsobjekt.

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

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

Beispiel

Das folgende Beispiel zeigt, wie ein Datensatz mit der BeanHandler-Klasse gelesen wird. Wir werden einen der verfügbaren Datensätze in der Employees Table lesen und ihn der Employee Bean zuordnen.

Syntax

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

Wo,

  • resultHandler - BeanHandler-Objekt, um die Ergebnismenge dem Employee-Objekt zuzuordnen.

  • 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 org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;

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 Employee Beans
      ResultSetHandler<Employee> resultHandler 
         = new BeanHandler<Employee>(Employee.class);

      try {
         Employee emp = queryRunner.query(conn,
            "SELECT * FROM employees WHERE first=?", resultHandler, "Sumit");
         //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: 103, Age: 28, First: Sumit, Last: Mittal

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

Das org.apache.commons.dbutils.ArrayListHandlerist die Implementierung der ResultSetHandler-Schnittstelle und ist dafür verantwortlich, die ResultSet-Zeilen in ein Objekt [] zu konvertieren. Diese Klasse ist threadsicher.

Klassenerklärung

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

public class ArrayListHandler
   extends AbstractListHandler<Object[]>

Verwendung

  • Step 1 - Erstellen Sie ein Verbindungsobjekt.

  • Step 2 - Implementierung von ResultSetHandler als ArrayListHandler-Objekt abrufen.

  • 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 ArrayListHandler-Klasse gelesen wird. Wir lesen die verfügbaren Datensätze in der Mitarbeitertabelle als Objekt [].

Syntax

List<Object> result = queryRunner.query(conn, "SELECT * FROM employees", new ArrayListHandler());

Wo,

  • resultHandler - ArrayListHandler-Objekt zum Zuordnen von Ergebnismengen zur Liste von Objekt [].

  • 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.Arrays;
import java.util.List;

import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayListHandler;

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

      try {
         List<Object[]> result = queryRunner.query(conn, "SELECT * FROM employees"
            , new ArrayListHandler());  
         for(Object[] objects : result) {
            System.out.println(Arrays.toString(objects));
         }           
      } 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.

[100, 18, Zara, Ali]
[101, 25, Mahnaz, Fatma]
[102, 30, Zaid, Khan]
[103, 28, Sumit, Mittal]

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

Klassenerklärung

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

public class MapListHandler
   extends AbstractListHandler<Map<String,Object>>

Verwendung

  • Step 1 - Erstellen Sie ein Verbindungsobjekt.

  • Step 2 - Implementierung von ResultSetHandler als MapListHandler-Objekt abrufen.

  • 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 MapListHandler-Klasse gelesen wird. Wir werden die verfügbaren Datensätze in der Mitarbeitertabelle als Liste der Karten lesen.

Syntax

List<Map<String, Object>> result = queryRunner.query(conn, "SELECT * FROM employees", new MapListHandler());

Wo,

  • resultHandler - MapListHandler-Objekt zum Zuordnen von Ergebnismengen zur Liste von Karten.

  • 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 java.util.Map;

import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.MapListHandler;

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

      try {
         List<Map<String, Object>> result = queryRunner.query(
            conn, "SELECT * FROM employees", new MapListHandler());      
         System.out.println(result);
      } 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.

Connecting to database...
[{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=33, first=Sumit, last=Mittal}]

Wir können unseren eigenen benutzerdefinierten Handler erstellen, indem wir die ResultSetHandler-Schnittstelle implementieren oder eine der vorhandenen Implementierungen von ResultSetHandler erweitern. Im folgenden Beispiel haben wir einen benutzerdefinierten Handler, EmployeeHandler, erstellt, indem wir die BeanHandler-Klasse erweitert haben.

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;
   private String name;
   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;
   }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
}

Es folgt der Inhalt der EmployeeHandler.java Datei.

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

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

public class EmployeeHandler extends BeanHandler<Employee> {

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

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

Es folgt der Inhalt der MainApp.java Datei.

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;

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

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: 103, Age: 28, Name: Sumit, Mittal

Falls die Spaltennamen in einer Datenbanktabelle und die entsprechenden Javabean-Objektnamen nicht ähnlich sind, können wir sie mithilfe eines benutzerdefinierten BasicRowProcessor-Objekts zuordnen. Siehe das folgende Beispiel.

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;
   private String name;
   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;
   }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
}

Es folgt der Inhalt der EmployeeHandler.java Datei.

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

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

public class EmployeeHandler extends BeanHandler<Employee> {

   public EmployeeHandler() {
      super(Employee.class, new BasicRowProcessor(new BeanProcessor(mapColumnsToFields())));
   }

   @Override
   public Employee handle(ResultSet rs) throws SQLException {
      Employee employee = super.handle(rs);
      employee.setName(employee.getFirst() +", " + employee.getLast());
      return employee;
   }
   
   public static Map<String, String> mapColumnsToFields() {
      Map<String, String> columnsToFieldsMap = new HashMap<>();
      columnsToFieldsMap.put("ID", "id");
      columnsToFieldsMap.put("AGE", "age");        
      return columnsToFieldsMap;
   }
}

Es folgt der Inhalt der MainApp.java Datei.

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

import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;

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

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: 103, Age: 28, Name: Sumit, Mittal

Bisher haben wir bei der Verwendung von QueryRunner ein Verbindungsobjekt verwendet. Wir können die Datenquelle auch scheinbar nahtlos verwenden. Das folgende Beispiel zeigt, wie ein Datensatz mithilfe der Abfrage "Lesen" mithilfe von QueryRunner und der Datenquelle gelesen wird. Wir werden einen Datensatz aus der Mitarbeitertabelle lesen.

Syntax

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

Wo,

  • dataSource - DataSource-Objekt konfiguriert.

  • resultHandler - ResultSetHandler-Objekt, um die Ergebnismenge dem Employee-Objekt zuzuordnen.

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

Es folgt der Inhalt der MainApp.java Datei.

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

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: 103, Age: 33, First: Sumit, Last: Mittal