Учебники

Apache Commons DBUtils — Краткое руководство

Apache Commons DBUtils — Обзор

Библиотека Apache Commons DbUtils представляет собой довольно небольшой набор классов, предназначенных для облегчения обработки вызовов JDBC без утечки ресурсов и для получения более чистого кода. Так как очистка JDBC-ресурсов довольно утомительна и подвержена ошибкам, классы DBUtils помогают абстрагировать базовый код, так что разработчики могут сосредоточиться только на операциях, связанных с базой данных.

Преимущества использования DBUtils

  • Отсутствие утечки ресурсов — классы DBUtils гарантируют, что утечки ресурсов не произойдет.

  • Чистый и ясный код — классы DBUtils предоставляют чистый и понятный код для выполнения операций с базой данных без необходимости написания кода для очистки или предотвращения утечки ресурсов.

  • Bean Mapping — класс DBUtils поддерживает автоматическое заполнение javabeans из набора результатов.

Отсутствие утечки ресурсов — классы DBUtils гарантируют, что утечки ресурсов не произойдет.

Чистый и ясный код — классы DBUtils предоставляют чистый и понятный код для выполнения операций с базой данных без необходимости написания кода для очистки или предотвращения утечки ресурсов.

Bean Mapping — класс DBUtils поддерживает автоматическое заполнение javabeans из набора результатов.

Принципы разработки DBUtils

  • Небольшая библиотека DBUtils очень мала по размеру и содержит меньше классов, поэтому ее легко понять и использовать.

  • Прозрачный — библиотека DBUtils не делает много работы за кулисами. Он просто принимает запрос и выполняет.

  • Быстро — классы библиотеки DBUtils не создают много фоновых объектов и довольно быстро выполняются при выполнении операций с базой данных.

Небольшая библиотека DBUtils очень мала по размеру и содержит меньше классов, поэтому ее легко понять и использовать.

Прозрачный — библиотека DBUtils не делает много работы за кулисами. Он просто принимает запрос и выполняет.

Быстро — классы библиотеки DBUtils не создают много фоновых объектов и довольно быстро выполняются при выполнении операций с базой данных.

Commons DBUtils — Настройка среды

Чтобы начать разработку с DBUtils, вы должны настроить среду DBUtils, выполнив шаги, показанные ниже. Мы предполагаем, что вы работаете на платформе Windows.

Установить Java

Установите J2SE Development Kit 5.0 (JDK 5.0) с официального сайта Java .

Убедитесь, что следующие переменные среды установлены, как описано ниже —

  • JAVA_HOME — эта переменная среды должна указывать на каталог, в который вы установили JDK, например C: \ Program Files \ Java \ jdk1.5.0.

  • CLASSPATH — для этой переменной среды должны быть установлены соответствующие пути, например C: \ Program Files \ Java \ jdk1.5.0_20 \ jre \ lib.

  • PATH — эта переменная среды должна указывать на соответствующий JRE bin, например C: \ Program Files \ Java \ jre1.5.0_20 \ bin.

JAVA_HOME — эта переменная среды должна указывать на каталог, в который вы установили JDK, например C: \ Program Files \ Java \ jdk1.5.0.

CLASSPATH — для этой переменной среды должны быть установлены соответствующие пути, например C: \ Program Files \ Java \ jdk1.5.0_20 \ jre \ lib.

PATH — эта переменная среды должна указывать на соответствующий JRE bin, например C: \ Program Files \ Java \ jre1.5.0_20 \ bin.

Возможно, вы уже установили эти переменные, но просто чтобы убедиться, что вот как это проверить.

  • Перейдите на панель управления и дважды щелкните значок «Система». Если вы являетесь пользователем Windows XP, возможно, вам придется открыть Performance and Maintenance, прежде чем вы увидите значок системы.

  • Перейдите на вкладку «Дополнительно» и нажмите «Переменные среды».

  • Теперь проверьте, все ли вышеупомянутые переменные установлены правильно.

Перейдите на панель управления и дважды щелкните значок «Система». Если вы являетесь пользователем Windows XP, возможно, вам придется открыть Performance and Maintenance, прежде чем вы увидите значок системы.

Перейдите на вкладку «Дополнительно» и нажмите «Переменные среды».

Теперь проверьте, все ли вышеупомянутые переменные установлены правильно.

Установить базу данных

Самая важная вещь, которая вам понадобится, конечно, это действующая база данных с таблицей, которую вы можете запрашивать и изменять.

Установите базу данных, которая наиболее подходит для вас. Вы можете иметь множество вариантов, и наиболее распространенными являются —

  • MySQL DB: MySQL — это база данных с открытым исходным кодом. Вы можете скачать его с официального сайта MySQL . Мы рекомендуем скачать полную установку Windows.

    Кроме того, загрузите и установите MySQL Administrator, а также MySQL Query Browser . Это инструменты на основе графического интерфейса, которые сделают вашу разработку намного проще.

    Наконец, загрузите и распакуйте MySQL Connector / J (драйвер MySQL JDBC) в удобную директорию. Для целей данного руководства мы предположим, что вы установили драйвер в C: \ Program Files \ MySQL \ mysql-connector-java-5.1.8.

    Соответственно, установите переменную CLASSPATH в C: \ Program Files \ MySQL \ mysql -nector-java-5.1.8 \ mysql-connector-java-5.1.8-bin.jar. Версия вашего драйвера может отличаться в зависимости от вашей установки.

  • PostgreSQL DB: PostgreSQL — это база данных с открытым исходным кодом. Вы можете скачать его с официального сайта PostgreSQL .

    Установка Postgres содержит административный инструмент на основе графического интерфейса, который называется pgAdmin III. Драйверы JDBC также включены как часть установки.

  • Oracle DB — Oracle DB — это коммерческая база данных, продаваемая Oracle. Мы предполагаем, что у вас есть необходимый дистрибутив для его установки.

    Установка Oracle включает административный инструмент на основе графического интерфейса, который называется Enterprise Manager. Драйверы JDBC также включены как часть установки.

MySQL DB: MySQL — это база данных с открытым исходным кодом. Вы можете скачать его с официального сайта MySQL . Мы рекомендуем скачать полную установку Windows.

Кроме того, загрузите и установите MySQL Administrator, а также MySQL Query Browser . Это инструменты на основе графического интерфейса, которые сделают вашу разработку намного проще.

Наконец, загрузите и распакуйте MySQL Connector / J (драйвер MySQL JDBC) в удобную директорию. Для целей данного руководства мы предположим, что вы установили драйвер в C: \ Program Files \ MySQL \ mysql-connector-java-5.1.8.

Соответственно, установите переменную CLASSPATH в C: \ Program Files \ MySQL \ mysql -nector-java-5.1.8 \ mysql-connector-java-5.1.8-bin.jar. Версия вашего драйвера может отличаться в зависимости от вашей установки.

PostgreSQL DB: PostgreSQL — это база данных с открытым исходным кодом. Вы можете скачать его с официального сайта PostgreSQL .

Установка Postgres содержит административный инструмент на основе графического интерфейса, который называется pgAdmin III. Драйверы JDBC также включены как часть установки.

Oracle DB — Oracle DB — это коммерческая база данных, продаваемая Oracle. Мы предполагаем, что у вас есть необходимый дистрибутив для его установки.

Установка Oracle включает административный инструмент на основе графического интерфейса, который называется Enterprise Manager. Драйверы JDBC также включены как часть установки.

Установите драйверы базы данных

Последний JDK включает в себя драйвер моста JDBC-ODBC, который делает большинство драйверов Open Database Connectivity (ODBC) доступными для программистов, использующих JDBC API.

Сейчас большинство поставщиков баз данных поставляют соответствующие драйверы JDBC вместе с установкой баз данных. Таким образом, вы не должны беспокоиться об этой части.

Установить учетные данные базы данных

Для этого урока мы будем использовать базу данных MySQL. Когда вы устанавливаете любую из вышеуказанных баз данных, для ее идентификатора администратора устанавливается значение root и вы можете задать пароль по вашему выбору.

Используя root ID и пароль, вы можете либо создать другой ID пользователя и пароль, либо вы можете использовать root ID и пароль для своего приложения JDBC.

Существуют различные операции с базами данных, такие как создание и удаление базы данных, для которых требуется идентификатор администратора и пароль.

В оставшейся части учебника по JDBC мы будем использовать базу данных MySQL с именем пользователя в качестве идентификатора и паролем в качестве пароля.

Если у вас недостаточно прав для создания новых пользователей, вы можете попросить администратора базы данных (IDA) создать для вас идентификатор пользователя и пароль.

Создать базу данных

Чтобы создать базу данных emp , выполните следующие действия:

Шаг 1

Откройте командную строку и перейдите в каталог установки следующим образом:

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

Примечание . Путь к mysqld.exe может отличаться в зависимости от места установки MySQL в вашей системе. Вы также можете проверить документацию о том, как запустить и остановить сервер базы данных.

Шаг 2

Запустите сервер базы данных, выполнив следующую команду, если он еще не запущен.

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

Шаг 3

Создайте базу данных emp , выполнив следующую команду —

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

Создать таблицу

Чтобы создать таблицу « Сотрудники» в базе данных emp, выполните следующие действия:

Шаг 1

Откройте командную строку и перейдите в каталог установки следующим образом:

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

Шаг 2

Войдите в базу данных следующим образом —

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

Шаг 3

Создайте таблицу Employee следующим образом —

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>

Создать записи данных

Наконец, вы создаете несколько записей в таблице Employee следующим образом:

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>

Для полного понимания базы данных MySQL, изучите учебник MySQL .

Скачать Commons DBUtils Архив

Загрузите последнюю версию файла jar Apache Common DBUtils из commons-dbutils-1.7-bin.zip , MySql-соединитель mysql-connector-java-5.1.28-bin.jar , Apache Commons DBCP commons-dbcp2-2.1.1-bin. zip , Apache Commons Pool commons-pool2-2.4.3-bin.zip и Apache Commons Logging commons-logging-1.2-bin.zip . На момент написания этого руководства мы загрузили commons-dbutils-1.7-bin.zip , mysql-connector-java-5.1.28-bin.jar , commons-dbcp2-2.1.1-bin.zip , commons-pool2 -2.4.3-bin.zip , commons-logging-1.2-bin.zip и скопировал его в папку C: \> Apache.

Операционные системы Название архива
Windows commons-dbutils-1.7-bin.zip
Linux Викисклада dbutils-1,7-bin.tar.gz
макинтош Викисклада dbutils-1,7-bin.tar.gz

Установите Apache Common DBUtils Environment

Установите переменную окружения APACHE_HOME, чтобы она указывала на местоположение базовой директории, где на вашем компьютере хранится jar-файл Apache. Предполагая, что мы извлекли commons-dbutils-1.7-bin.zip в папку Apache в различных операционных системах следующим образом.

Операционные системы Выход
Windows Установите переменную окружения APACHE_HOME в C: \ Apache
Linux экспорт APACHE_HOME = / usr / local / Apache
макинтош экспорт APACHE_HOME = / Библиотека / Apache

Установить переменную CLASSPATH

Задайте переменную среды CLASSPATH, чтобы она указывала на расположение JAR Common IO. Предполагая, что вы сохранили commons-dbutils-1.7-bin.zip в папке Apache в различных операционных системах следующим образом.

Операционные системы Выход
Windows Задайте для переменной среды CLASSPATH значение% 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; Обще-каротаж 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.
макинтош export CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-dbutils-1.7.jar: mysql -nector-java-5.1.28: commons-dbcp2-2.1.1.jar: commons-pool2-2.4.3.jar; commons-logging -1.2.jar.

Теперь вы готовы начать экспериментировать с DBUtils. В следующей главе приведен пример примера программирования DBUtils.

Apache Commons DBUtils — первое приложение

В этой главе приведен пример того, как создать простое приложение JDBC с использованием библиотеки DBUtils. Это покажет вам, как открыть соединение с базой данных, выполнить запрос SQL и отобразить результаты.

Все шаги, упомянутые в этом примере шаблона, будут объяснены в последующих главах этого руководства.

Создание приложения JDBC

В создании приложения JDBC есть шесть следующих шагов:

  • Импортировать пакеты. Требуется включить пакеты, содержащие классы JDBC, необходимые для программирования баз данных. Чаще всего достаточно использовать импорт java.sql. * .

  • Зарегистрировать драйвер JDBC. Требуется инициализировать драйвер, чтобы вы могли открыть канал связи с базой данных.

  • Открыть соединение. Требуется использование метода DriverManager.getConnection () для создания объекта Соединение, представляющего физическое соединение с базой данных.

  • Выполнить запрос — требует использования объекта типа Statement для построения и отправки SQL-выражения в базу данных.

  • Извлечь данные из набора результатов. Требуется использовать соответствующий метод ResultSet.getXXX () для извлечения данных из набора результатов.

  • Очистка среды. Требуется явное закрытие всех ресурсов базы данных, а не использование сборки мусора JVM.

Импортировать пакеты. Требуется включить пакеты, содержащие классы JDBC, необходимые для программирования баз данных. Чаще всего достаточно использовать импорт java.sql. * .

Зарегистрировать драйвер JDBC. Требуется инициализировать драйвер, чтобы вы могли открыть канал связи с базой данных.

Открыть соединение. Требуется использование метода DriverManager.getConnection () для создания объекта Соединение, представляющего физическое соединение с базой данных.

Выполнить запрос — требует использования объекта типа Statement для построения и отправки SQL-выражения в базу данных.

Извлечь данные из набора результатов. Требуется использовать соответствующий метод ResultSet.getXXX () для извлечения данных из набора результатов.

Очистка среды. Требуется явное закрытие всех ресурсов базы данных, а не использование сборки мусора JVM.

Образец кода

Этот пример примера может служить шаблоном, когда вам необходимо в будущем создать собственное приложение JDBC.

Этот пример кода был написан на основе настройки среды и базы данных, выполненной в предыдущей главе.

Скопируйте и вставьте следующий пример в MainApp.java, скомпилируйте и запустите следующим образом:

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

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

Теперь давайте скомпилируем приведенный выше пример следующим образом:

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

Когда вы запускаете MainApp , он дает следующий результат —

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

Apache Commons DBUtils — Создать запрос

В следующем примере будет показано, как создать запись с помощью запроса вставки с помощью DBUtils. Мы вставим запись в таблицу сотрудников.

Синтаксис

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

Куда,

  • insertQueryвставляет запрос с заполнителями.

  • queryRunner — объект QueryRunner для вставки объекта сотрудника в базу данных.

insertQueryвставляет запрос с заполнителями.

queryRunner — объект QueryRunner для вставки объекта сотрудника в базу данных.

Чтобы понять вышеупомянутые концепции, связанные с DBUtils, давайте напишем пример, который будет выполнять запрос вставки. Чтобы написать наш пример, давайте создадим пример приложения.

шаг Описание
1 Обновите файл MainApp.java, созданный в главе DBUtils — First Application .
2 Скомпилируйте и запустите приложение, как описано ниже.

Ниже приводится содержание 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 .

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

Как только вы закончите создание исходных файлов, давайте запустим приложение. Если с вашим приложением все в порядке, оно напечатает следующее сообщение.

1 record(s) inserted.

Apache Commons DBUtils — чтение запросов

В следующем примере будет показано, как прочитать запись с помощью запроса Read с помощью DBUtils. Мы прочтем запись из таблицы сотрудников.

Синтаксис

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

Куда,

  • resultHandler — объект ResultSetHandler для сопоставления результирующего набора с объектом Employee.

  • queryRunner — объект QueryRunner для чтения объекта сотрудника из базы данных.

resultHandler — объект ResultSetHandler для сопоставления результирующего набора с объектом Employee.

queryRunner — объект QueryRunner для чтения объекта сотрудника из базы данных.

Чтобы понять вышеупомянутые концепции, связанные с DBUtils, давайте напишем пример, который будет выполнять запрос на чтение. Чтобы написать наш пример, давайте создадим пример приложения.

шаг Описание
1 Обновите файл MainApp.java, созданный в главе DBUtils — First Application .
2 Скомпилируйте и запустите приложение, как описано ниже.

Ниже приводится содержание 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 .

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

Как только вы закончите создание исходных файлов, давайте запустим приложение. Если с вашим приложением все в порядке, оно напечатает следующее сообщение.

ID: 104, Age: 30, First: Sohan, Last: Kumar

Apache Commons DBUtils — запрос на обновление

В следующем примере будет показано, как обновить запись с помощью запроса на обновление с помощью DBUtils. Мы обновим запись в таблице сотрудников.

Синтаксис

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

Куда,

  • updateQuery — Обновить запрос, имеющий заполнители.

  • queryRunner — объект QueryRunner для обновления объекта сотрудника в базе данных.

updateQuery — Обновить запрос, имеющий заполнители.

queryRunner — объект QueryRunner для обновления объекта сотрудника в базе данных.

Чтобы понять вышеупомянутые концепции, связанные с DBUtils, давайте напишем пример, который будет запускать запрос на обновление. Чтобы написать наш пример, давайте создадим пример приложения.

шаг Описание
1 Обновите файл MainApp.java, созданный в главе DBUtils — First Application .
2 Скомпилируйте и запустите приложение, как описано ниже.

Ниже приводится содержание 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 .

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

Как только вы закончите создание исходных файлов, давайте запустим приложение. Если с вашим приложением все в порядке, оно напечатает следующее сообщение.

1 record(s) updated.

Apache Commons DBUtils — Удалить запрос

В следующем примере будет показано, как удалить запись с помощью запроса Delete с помощью DBUtils. Мы удалим запись в таблице сотрудников.

Синтаксис

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

Куда,

  • deleteQuery — УДАЛИТЬ запрос, имеющий заполнители.

  • queryRunner — объект QueryRunner для удаления объекта сотрудника в базе данных.

deleteQuery — УДАЛИТЬ запрос, имеющий заполнители.

queryRunner — объект QueryRunner для удаления объекта сотрудника в базе данных.

Чтобы понять вышеупомянутые концепции, связанные с DBUtils, давайте напишем пример, который будет выполнять запрос на удаление. Чтобы написать наш пример, давайте создадим пример приложения.

шаг Описание
1 Обновите файл MainApp.java, созданный в главе DBUtils — First Application .
2 Скомпилируйте и запустите приложение, как описано ниже.

Ниже приводится содержание 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 .

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

Как только вы закончите создание исходных файлов, давайте запустим приложение. Если с вашим приложением все в порядке, оно напечатает следующее сообщение.

1 record(s) deleted.

Commons DBUtils — интерфейс QueryRunner

Класс org.apache.commons.dbutils.QueryRunner является центральным классом в библиотеке DBUtils. Он выполняет SQL-запросы с подключаемыми стратегиями для обработки ResultSets. Этот класс является потокобезопасным.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.dbutils.QueryRunner —

public class QueryRunner
   extends AbstractQueryRunner

использование

  • Шаг 1 — Создайте объект подключения.

  • Шаг 2 — Используйте объектные методы QueryRunner для выполнения операций с базой данных.

Шаг 1 — Создайте объект подключения.

Шаг 2 — Используйте объектные методы QueryRunner для выполнения операций с базой данных.

пример

Следующий пример покажет, как читать записи с помощью класса QueryRunner. Мы будем читать одну из доступных записей в таблице сотрудников.

Синтаксис

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

Куда,

  • resultHandler — объект ResultSetHandler для сопоставления результирующего набора с объектом Employee.

  • queryRunner — объект QueryRunner для чтения объекта сотрудника из базы данных.

resultHandler — объект ResultSetHandler для сопоставления результирующего набора с объектом Employee.

queryRunner — объект QueryRunner для чтения объекта сотрудника из базы данных.

Чтобы понять вышеупомянутые концепции, связанные с DBUtils, давайте напишем пример, который будет выполнять запрос на чтение. Чтобы написать наш пример, давайте создадим пример приложения.

шаг Описание
1 Обновите файл MainApp.java, созданный в главе DBUtils — First Application .
2 Скомпилируйте и запустите приложение, как описано ниже.

Ниже приводится содержание 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 .

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

Как только вы закончите создание исходных файлов, давайте запустим приложение. Если с вашим приложением все в порядке, оно напечатает следующее сообщение.

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

Интерфейс AsyncQueryRunner

Класс org.apache.commons.dbutils.AsyncQueryRunner помогает выполнять длительные SQL-запросы с поддержкой асинхронности. Этот класс является потокобезопасным. Этот класс поддерживает те же методы, что и QueryRunner, но он возвращает объекты Callable, которые можно использовать позже для получения результата.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.dbutils.AsyncQueryRunner —

public class AsyncQueryRunner
   extends AbstractQueryRunner

использование

  • Шаг 1 — Создайте объект подключения.

  • Шаг 2 — Используйте объектные методы AsyncQueryRunner для выполнения операций с базой данных.

Шаг 1 — Создайте объект подключения.

Шаг 2 — Используйте объектные методы AsyncQueryRunner для выполнения операций с базой данных.

пример

В следующем примере будет показано, как обновить запись с помощью класса AsyncQueryRunner. Мы обновим одну из доступных записей в Таблице сотрудников.

Синтаксис

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

Куда,

  • updateQuery — Обновить запрос, имеющий заполнители.

  • asyncQueryRunner — объект asyncQueryRunner для обновления объекта сотрудника в базе данных.

  • future — объект Future для получения результата позже.

updateQuery — Обновить запрос, имеющий заполнители.

asyncQueryRunner — объект asyncQueryRunner для обновления объекта сотрудника в базе данных.

future — объект Future для получения результата позже.

Чтобы понять вышеупомянутые концепции, связанные с DBUtils, давайте напишем пример, который будет запускать запрос на обновление в асинхронном режиме. Чтобы написать наш пример, давайте создадим пример приложения.

шаг Описание
1 Обновите файл MainApp.java, созданный в главе DBUtils — First Application .
2 Скомпилируйте и запустите приложение, как описано ниже.

Ниже приводится содержание 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 .

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

Как только вы закончите создание исходных файлов, давайте запустим приложение. Если с вашим приложением все в порядке, оно напечатает следующее сообщение.

1 record(s) updated.

ResultSetHandler интерфейс

Интерфейс org.apache.commons.dbutils.ResultSetHandler отвечает за преобразование ResultSets в объекты.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.dbutils.ResultSetHandler —

public interface ResultSetHandler<T>

использование

  • Шаг 1 — Создайте объект подключения.

  • Шаг 2 — Создать реализацию ResultSetHandler.

  • Шаг 3 — Передайте resultSetHandler объекту QueryRunner и выполните операции с базой данных.

Шаг 1 — Создайте объект подключения.

Шаг 2 — Создать реализацию ResultSetHandler.

Шаг 3 — Передайте resultSetHandler объекту QueryRunner и выполните операции с базой данных.

пример

В следующем примере будет показано, как отобразить запись с помощью класса ResultSetHandler. Мы прочитаем одну из доступных записей в таблице сотрудников.

Синтаксис

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

Куда,

  • resultHandler — объект ResultSetHandler для сопоставления результирующего набора с объектом Employee.

  • queryRunner — объект QueryRunner для чтения объекта сотрудника из базы данных.

resultHandler — объект ResultSetHandler для сопоставления результирующего набора с объектом Employee.

queryRunner — объект QueryRunner для чтения объекта сотрудника из базы данных.

Чтобы понять вышеупомянутые концепции, связанные с DBUtils, давайте напишем пример, который будет выполнять запрос на чтение. Чтобы написать наш пример, давайте создадим пример приложения.

шаг Описание
1 Обновите файл MainApp.java, созданный в главе DBUtils — First Application .
2 Скомпилируйте и запустите приложение, как описано ниже.

Ниже приводится содержание 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 .

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

Как только вы закончите создание исходных файлов, давайте запустим приложение. Если с вашим приложением все в порядке, оно напечатает следующее сообщение.

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

Commons DBUtils — класс BeanHandler

Org.apache.commons.dbutils.BeanHandler является реализацией интерфейса ResultSetHandler и отвечает за преобразование первой строки ResultSet в JavaBean. Этот класс является потокобезопасным.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.dbutils.BeanHandler —

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

использование

  • Шаг 1 — Создайте объект подключения.

  • Шаг 2 — Получить реализацию ResultSetHandler как объект BeanHandler.

  • Шаг 3 — Передайте resultSetHandler объекту QueryRunner и выполните операции с базой данных.

Шаг 1 — Создайте объект подключения.

Шаг 2 — Получить реализацию ResultSetHandler как объект BeanHandler.

Шаг 3 — Передайте resultSetHandler объекту QueryRunner и выполните операции с базой данных.

пример

Следующий пример продемонстрирует, как читать записи с использованием класса BeanHandler. Мы прочитаем одну из доступных записей в таблице сотрудников и сопоставим ее с компонентом сотрудника.

Синтаксис

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

Куда,

  • resultHandler — объект BeanHandler для сопоставления набора результатов с объектом Employee.

  • queryRunner — объект QueryRunner для чтения объекта сотрудника из базы данных.

resultHandler — объект BeanHandler для сопоставления набора результатов с объектом Employee.

queryRunner — объект QueryRunner для чтения объекта сотрудника из базы данных.

Чтобы понять вышеупомянутые концепции, связанные с DBUtils, давайте напишем пример, который будет выполнять запрос на чтение. Чтобы написать наш пример, давайте создадим пример приложения.

шаг Описание
1 Обновите файл MainApp.java, созданный в главе DBUtils — First Application .
2 Скомпилируйте и запустите приложение, как описано ниже.

Ниже приводится содержание 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 .

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

Как только вы закончите создание исходных файлов, давайте запустим приложение. Если с вашим приложением все в порядке, оно напечатает следующее сообщение.

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

Commons DBUtils — класс BeanListHandler

Org.apache.commons.dbutils.BeanListHandler является реализацией интерфейса ResultSetHandler и отвечает за преобразование строк ResultSet в список Java Bean. Этот класс является потокобезопасным.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.dbutils.BeanListHandler —

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

использование

  • Шаг 1 — Создайте объект подключения.

  • Шаг 2 — Получить реализацию ResultSetHandler как объект BeanListHandler.

  • Шаг 3 — Передайте resultSetHandler объекту QueryRunner и выполните операции с базой данных.

Шаг 1 — Создайте объект подключения.

Шаг 2 — Получить реализацию ResultSetHandler как объект BeanListHandler.

Шаг 3 — Передайте resultSetHandler объекту QueryRunner и выполните операции с базой данных.

пример

Следующий пример покажет, как читать список записей, используя класс BeanListHandler. Мы прочтем доступные записи в таблице сотрудников и сопоставим их со списком компонентов сотрудников.

Синтаксис

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

Куда,

  • resultHandler — объект BeanListHandler для сопоставления наборов результатов со списком объектов Employee.

  • queryRunner — объект QueryRunner для чтения объекта сотрудника из базы данных.

resultHandler — объект BeanListHandler для сопоставления наборов результатов со списком объектов Employee.

queryRunner — объект QueryRunner для чтения объекта сотрудника из базы данных.

Чтобы понять вышеупомянутые концепции, связанные с DBUtils, давайте напишем пример, который будет выполнять запрос на чтение. Чтобы написать наш пример, давайте создадим пример приложения.

шаг Описание
1 Обновите файл MainApp.java, созданный в главе DBUtils — First Application .
2 Скомпилируйте и запустите приложение, как описано ниже.

Ниже приводится содержание 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 .

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

Как только вы закончите создание исходных файлов, давайте запустим приложение. Если с вашим приложением все в порядке, оно напечатает следующее сообщение.

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

Commons DBUtils — класс ArrayListHandler

Org.apache.commons.dbutils.ArrayListHandler является реализацией интерфейса ResultSetHandler и отвечает за преобразование строк ResultSet в объект []. Этот класс является потокобезопасным.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.dbutils.ArrayListHandler —

public class ArrayListHandler
   extends AbstractListHandler<Object[]>

использование

  • Шаг 1 — Создайте объект подключения.

  • Шаг 2 — Получить реализацию ResultSetHandler как объект ArrayListHandler.

  • Шаг 3 — Передайте resultSetHandler объекту QueryRunner и выполните операции с базой данных.

Шаг 1 — Создайте объект подключения.

Шаг 2 — Получить реализацию ResultSetHandler как объект ArrayListHandler.

Шаг 3 — Передайте resultSetHandler объекту QueryRunner и выполните операции с базой данных.

пример

Следующий пример продемонстрирует, как читать список записей, используя класс ArrayListHandler. Мы будем читать доступные записи в Таблице сотрудников как объект [].

Синтаксис

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

Куда,

  • resultHandler — объект ArrayListHandler для сопоставления наборов результатов со списком объекта [].

  • queryRunner — объект QueryRunner для чтения объекта сотрудника из базы данных.

resultHandler — объект ArrayListHandler для сопоставления наборов результатов со списком объекта [].

queryRunner — объект QueryRunner для чтения объекта сотрудника из базы данных.

Чтобы понять вышеупомянутые концепции, связанные с DBUtils, давайте напишем пример, который будет выполнять запрос на чтение. Чтобы написать наш пример, давайте создадим пример приложения.

шаг Описание
1 Обновите файл MainApp.java, созданный в главе DBUtils — First Application .
2 Скомпилируйте и запустите приложение, как описано ниже.

Ниже приводится содержание 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 .

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

Как только вы закончите создание исходных файлов, давайте запустим приложение. Если с вашим приложением все в порядке, оно напечатает следующее сообщение.

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

Commons DBUtils — класс MapListHandler

Org.apache.commons.dbutils.MapListHandler является реализацией интерфейса ResultSetHandler и отвечает за преобразование строк ResultSet в список карт. Этот класс является потокобезопасным.

Декларация класса

Ниже приводится объявление для класса org.apache.commons.dbutils.MapListHandler —

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

использование

  • Шаг 1 — Создайте объект подключения.

  • Шаг 2 — Получить реализацию ResultSetHandler как объект MapListHandler.

  • Шаг 3 — Передайте resultSetHandler объекту QueryRunner и выполните операции с базой данных.

Шаг 1 — Создайте объект подключения.

Шаг 2 — Получить реализацию ResultSetHandler как объект MapListHandler.

Шаг 3 — Передайте resultSetHandler объекту QueryRunner и выполните операции с базой данных.

пример

В следующем примере будет показано, как читать список записей, используя класс MapListHandler. Мы будем читать доступные записи в таблице сотрудников в виде списка карт.

Синтаксис

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

Куда,

  • resultHandler — объект MapListHandler для сопоставления наборов результатов со списком карт.

  • queryRunner — объект QueryRunner для чтения объекта сотрудника из базы данных.

resultHandler — объект MapListHandler для сопоставления наборов результатов со списком карт.

queryRunner — объект QueryRunner для чтения объекта сотрудника из базы данных.

Чтобы понять вышеупомянутые концепции, связанные с DBUtils, давайте напишем пример, который будет выполнять запрос на чтение. Чтобы написать наш пример, давайте создадим пример приложения.

шаг Описание
1 Обновите файл MainApp.java, созданный в главе DBUtils — First Application .
2 Скомпилируйте и запустите приложение, как описано ниже.

Ниже приводится содержание 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 .

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

Как только вы закончите создание исходных файлов, давайте запустим приложение. Если с вашим приложением все в порядке, оно напечатает следующее сообщение.

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

Apache Commons DBUtils — пользовательский обработчик

Мы можем создать наш собственный обработчик, реализуя интерфейс ResultSetHandler или расширяя любую существующую реализацию ResultSetHandler. В приведенном ниже примере мы создали пользовательский обработчик EmployeeHandler, расширив класс BeanHandler.

Чтобы понять вышеупомянутые концепции, связанные с DBUtils, давайте напишем пример, который будет выполнять запрос на чтение. Чтобы написать наш пример, давайте создадим пример приложения.

шаг Описание
1 Обновите файл MainApp.java, созданный в главе DBUtils — First Application .
2 Скомпилируйте и запустите приложение, как описано ниже.

Ниже приводится содержание 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;
   }
}

Ниже приводится содержимое файла EmployeeHandler.java .

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

Ниже приводится содержание файла 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();
      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);
      }        
   }
}

Как только вы закончите создание исходных файлов, давайте запустим приложение. Если с вашим приложением все в порядке, оно напечатает следующее сообщение.

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

Commons DBUtils — пользовательский процессор строк

В случае, если имена столбцов в таблице базы данных и эквивалентные имена объектов javabean не похожи, мы можем отобразить их с помощью настроенного объекта BasicRowProcessor. Смотрите пример ниже.

Чтобы понять вышеупомянутые концепции, связанные с DBUtils, давайте напишем пример, который будет выполнять запрос на чтение. Чтобы написать наш пример, давайте создадим пример приложения.

шаг Описание
1 Обновите файл MainApp.java, созданный в главе DBUtils — First Application .
2 Скомпилируйте и запустите приложение, как описано ниже.

Ниже приводится содержание 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;
   }
}

Ниже приводится содержимое файла EmployeeHandler.java .

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

Ниже приводится содержание файла 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;

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

Как только вы закончите создание исходных файлов, давайте запустим приложение. Если с вашим приложением все в порядке, оно напечатает следующее сообщение.

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

Commons DBUtils — Использование DataSource

До сих пор мы использовали объект подключения при использовании QueryRunner. Мы также можем использовать источник данных без всяких на то оснований. В следующем примере будет показано, как прочитать запись с помощью запроса на чтение с помощью QueryRunner и источника данных. Мы прочтем запись из таблицы сотрудников.

Синтаксис

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

Куда,

  • dataSource — настроенный объект DataSource.

  • resultHandler — объект ResultSetHandler для сопоставления результирующего набора с объектом Employee.

  • queryRunner — объект QueryRunner для чтения объекта сотрудника из базы данных.

dataSource — настроенный объект DataSource.

resultHandler — объект ResultSetHandler для сопоставления результирующего набора с объектом Employee.

queryRunner — объект QueryRunner для чтения объекта сотрудника из базы данных.

Чтобы понять вышеупомянутые концепции, связанные с DBUtils, давайте напишем пример, который будет выполнять запрос на чтение. Чтобы написать наш пример, давайте создадим пример приложения.

шаг Описание
1 Обновите файл MainApp.java, созданный в главе DBUtils — First Application .
2 Скомпилируйте и запустите приложение, как описано ниже.

Ниже приводится содержание 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;
   }
}

Ниже приводится содержание 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;
   }
}

Ниже приводится содержание файла MainApp.java .

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

Как только вы закончите создание исходных файлов, давайте запустим приложение. Если с вашим приложением все в порядке, оно напечатает следующее сообщение.