Apache Commons DBUtils - Panduan Cepat
Pustaka Apache Commons DbUtils adalah sekumpulan kelas yang cukup kecil, yang dirancang untuk mempermudah pemrosesan panggilan JDBC tanpa kebocoran sumber daya dan memiliki kode yang lebih bersih. Karena pembersihan sumber daya JDBC cukup membosankan dan rawan kesalahan, kelas DBUtils membantu mengabstraksi kode pelat boiler, sehingga pengembang dapat fokus hanya pada operasi terkait database.
Keuntungan DBUtils
Keuntungan menggunakan Apache Commons DBUtils dijelaskan di bawah -
No Resource Leakage - Kelas DBUtils memastikan bahwa tidak ada kebocoran sumber daya yang terjadi.
Clean & Clear code - Kelas DBUtils menyediakan kode yang bersih dan jelas untuk melakukan operasi database tanpa perlu menulis kode pembersihan atau pencegahan kebocoran sumber daya.
Bean Mapping - Dukungan kelas DBUtils untuk secara otomatis mengisi javabeans dari kumpulan hasil.
Prinsip Desain DBUtils
Prinsip desain dari Apache Commons DBUtils adalah sebagai berikut -
Small - Library DBUtils berukuran sangat kecil dengan class yang lebih sedikit, sehingga mudah untuk dipahami dan digunakan.
Transparent- Perpustakaan DBUtils tidak melakukan banyak pekerjaan di belakang layar. Ini hanya membutuhkan kueri dan mengeksekusi.
Fast - Kelas perpustakaan DBUtils tidak membuat banyak objek latar belakang dan cukup cepat dalam eksekusi operasi database.
Untuk mulai mengembangkan dengan DBUtils, Anda harus mengatur lingkungan DBUtils Anda dengan mengikuti langkah-langkah yang ditunjukkan di bawah ini. Kami berasumsi bahwa Anda bekerja pada platform Windows.
Instal Java
Instal J2SE Development Kit 5.0 (JDK 5.0) dari Situs Resmi Java .
Pastikan variabel lingkungan berikut disetel seperti yang dijelaskan di bawah ini -
JAVA_HOME - Variabel lingkungan ini harus mengarah ke direktori tempat Anda menginstal JDK, misalnya C: \ Program Files \ Java \ jdk1.5.0.
CLASSPATH - Variabel lingkungan ini harus memiliki jalur yang sesuai, misalnya C: \ Program Files \ Java \ jdk1.5.0_20 \ jre \ lib.
PATH - Variabel lingkungan ini harus mengarah ke JRE bin yang sesuai, misalnya C: \ Program Files \ Java \ jre1.5.0_20 \ bin.
Mungkin saja Anda sudah menyetel variabel ini, tetapi hanya untuk memastikan berikut cara memeriksanya.
Buka panel kontrol dan klik dua kali pada Sistem. Jika Anda adalah pengguna Windows XP, Anda mungkin harus membuka Kinerja dan Pemeliharaan sebelum Anda melihat ikon Sistem.
Buka tab Advanced dan klik Variabel Lingkungan.
Sekarang periksa apakah semua variabel yang disebutkan di atas disetel dengan benar.
Instal Database
Hal terpenting yang Anda perlukan, tentu saja adalah database yang sedang berjalan dengan tabel yang dapat Anda kueri dan modifikasi.
Instal database yang paling sesuai untuk Anda. Anda dapat memiliki banyak pilihan dan yang paling umum adalah -
MySQL DB:MySQL adalah database open source. Anda dapat mengunduhnya dari Situs Resmi MySQL . Kami merekomendasikan mengunduh penginstalan Windows lengkap.
Selain itu, unduh dan instal Administrator MySQL serta MySQL Query Browser . Ini adalah alat berbasis GUI yang akan membuat pengembangan Anda lebih mudah.
Terakhir, unduh dan unzip Konektor MySQL / J (driver MySQL JDBC) di direktori yang mudah digunakan. Untuk keperluan tutorial ini kami akan menganggap bahwa Anda telah menginstal driver di C: \ Program Files \ MySQL \ mysql-connector-java-5.1.8.
Karenanya, setel variabel CLASSPATH ke C: \ Program Files \ MySQL \ mysql-connector-java-5.1.8 \ mysql-connector-java-5.1.8-bin.jar. Versi driver Anda mungkin berbeda berdasarkan penginstalan Anda.
PostgreSQL DB:PostgreSQL adalah database open source. Anda dapat mengunduhnya dari Situs Resmi PostgreSQL .
Instalasi Postgres berisi alat administratif berbasis GUI yang disebut pgAdmin III. Driver JDBC juga disertakan sebagai bagian dari instalasi.
Oracle DB- Oracle DB adalah database komersial yang dijual oleh Oracle. Kami berasumsi bahwa Anda memiliki media distribusi yang diperlukan untuk menginstalnya.
Instalasi Oracle menyertakan alat administratif berbasis GUI yang disebut Enterprise Manager. Driver JDBC juga disertakan sebagai bagian dari penginstalan.
Instal Driver Database
JDK terbaru menyertakan driver JDBC-ODBC Bridge yang membuat sebagian besar driver Open Database Connectivity (ODBC) tersedia untuk pemrogram yang menggunakan JDBC API.
Saat ini, sebagian besar vendor Database menyediakan driver JDBC yang sesuai bersama dengan instalasi Database. Jadi, Anda tidak perlu khawatir tentang bagian ini.
Setel Kredensial Database
Untuk tutorial ini kita akan menggunakan database MySQL. Saat Anda menginstal salah satu database di atas, ID administratornya disetel keroot dan memberikan ketentuan untuk mengatur kata sandi pilihan Anda.
Dengan menggunakan ID root dan kata sandi, Anda dapat membuat ID pengguna dan kata sandi lain, atau Anda dapat menggunakan ID root dan kata sandi untuk aplikasi JDBC Anda.
Ada berbagai operasi database seperti pembuatan dan penghapusan database, yang memerlukan ID dan kata sandi administrator.
Untuk tutorial JDBC lainnya, kita akan menggunakan Database MySQL dengan username sebagai ID dan password sebagai kata sandi.
Jika Anda tidak memiliki cukup hak untuk membuat pengguna baru, Anda dapat meminta Administrator Database (DBA) untuk membuatkan ID pengguna dan kata sandi untuk Anda.
Buat Database
Untuk membuat emp database, gunakan langkah-langkah berikut -
Langkah 1
Buka sebuah Command Prompt dan ubah ke direktori instalasi sebagai berikut -
C:\>
C:\>cd Program Files\MySQL\bin
C:\Program Files\MySQL\bin>
Note: Jalan menuju mysqld.exedapat bervariasi tergantung pada lokasi penginstalan MySQL di sistem Anda. Anda juga dapat memeriksa dokumentasi tentang cara memulai dan menghentikan server database Anda.
Langkah 2
Mulai server database dengan menjalankan perintah berikut, jika sudah tidak berjalan.
C:\Program Files\MySQL\bin>mysqld
C:\Program Files\MySQL\bin>
LANGKAH 3
Buat emp database dengan menjalankan perintah berikut -
C:\Program Files\MySQL\bin> mysqladmin create emp -u root -p
Enter password: ********
C:\Program Files\MySQL\bin>
Buat tabel
Untuk membuat Employees tabel dalam database emp, gunakan langkah-langkah berikut -
Langkah 1
Buka sebuah Command Prompt dan ubah ke direktori instalasi sebagai berikut -
C:\>
C:\>cd Program Files\MySQL\bin
C:\Program Files\MySQL\bin>
Langkah 2
Login ke database sebagai berikut -
C:\Program Files\MySQL\bin>mysql -u root -p
Enter password: ********
mysql>
LANGKAH 3
Buat tabel Employee sebagai berikut -
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>
Buat Rekaman Data
Akhirnya Anda membuat beberapa catatan dalam tabel Karyawan sebagai berikut -
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>
Untuk pemahaman lengkap tentang database MySQL, pelajari Tutorial MySQL .
Unduh Arsip DBUtils Commons
Unduh versi terbaru file jar Apache Common DBUtils dari commons-dbutils-1.7-bin.zip , konektor 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 dan, Apache Commons Logging commons-logging-1.2-bin.zip . Pada saat menulis tutorial ini, kami telah mengunduh 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 dan menyalinnya ke folder C: \> Apache.
OS | Nama arsip |
---|---|
Windows | commons-dbutils-1.7-bin.zip |
Linux | commons-dbutils-1.7-bin.tar.gz |
Mac | commons-dbutils-1.7-bin.tar.gz |
Setel Apache Common DBUtils Environment
Mengatur APACHE_HOMEvariabel lingkungan untuk menunjuk ke lokasi direktori dasar tempat jar Apache disimpan di komputer Anda. Dengan asumsi, kami telah mengekstrak commons-dbutils-1.7-bin.zip di folder Apache pada berbagai Sistem Operasi sebagai berikut.
OS | Keluaran |
---|---|
Windows | Setel variabel lingkungan APACHE_HOME ke C: \ Apache |
Linux | ekspor APACHE_HOME = / usr / local / Apache |
Mac | ekspor APACHE_HOME = / Library / Apache |
Setel Variabel CLASSPATH
Mengatur CLASSPATHvariabel lingkungan untuk menunjuk ke lokasi jar Common IO. Dengan asumsi, Anda telah menyimpan commons-dbutils-1.7-bin.zip di folder Apache pada berbagai Sistem Operasi sebagai berikut.
OS | Keluaran |
---|---|
Windows | Setel variabel lingkungan CLASSPATH ke% 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 | ekspor 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 | ekspor 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. |
Sekarang Anda siap untuk mulai bereksperimen dengan DBUtils. Bab selanjutnya memberi Anda contoh contoh tentang Pemrograman DBUtils.
Bab ini memberikan contoh bagaimana membuat aplikasi JDBC sederhana menggunakan perpustakaan DBUtils. Ini akan menunjukkan kepada Anda, cara membuka koneksi database, menjalankan kueri SQL, dan menampilkan hasilnya.
Semua langkah yang disebutkan dalam contoh templat ini, akan dijelaskan pada bab-bab selanjutnya dari tutorial ini.
Membuat Aplikasi JDBC
Ada enam langkah berikut yang terlibat dalam membangun aplikasi JDBC -
Import the packages- Mengharuskan Anda menyertakan paket yang berisi kelas JDBC yang diperlukan untuk pemrograman database. Paling sering, menggunakanimport java.sql.* sudah cukup.
Register the JDBC driver - Mengharuskan Anda menginisialisasi driver, sehingga Anda dapat membuka saluran komunikasi dengan database.
Open a connection - Membutuhkan penggunaan DriverManager.getConnection() metode untuk membuat objek Connection, yang mewakili koneksi fisik dengan database.
Execute a query - Memerlukan penggunaan objek Pernyataan tipe untuk membangun dan mengirimkan pernyataan SQL ke database.
Extract data from result set - Mengharuskan Anda menggunakan yang sesuai ResultSet.getXXX() metode untuk mengambil data dari kumpulan hasil.
Clean up the environment - Mengharuskan menutup semua sumber database secara eksplisit versus mengandalkan pengumpulan sampah JVM.
Kode sampel
Contoh contoh ini dapat berfungsi sebagai template, saat Anda perlu membuat aplikasi JDBC Anda sendiri di masa mendatang.
Kode contoh ini telah ditulis berdasarkan lingkungan dan penyiapan database yang dilakukan di bab sebelumnya.
Salin dan tempel contoh berikut di MainApp.java, kompilasi dan jalankan seperti berikut -
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
Program ini diberikan di bawah ini -
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;
}
}
Sekarang mari kita kompilasi contoh di atas sebagai berikut -
C:\>javac MainApp.java Employee.java
C:\>
Saat kamu lari MainApp, itu menghasilkan hasil sebagai berikut -
C:\>java MainApp
Connecting to database...
ID: 103, Age: 28, First: Sumit, Last: Mittal
C:\>
Contoh berikut akan mendemonstrasikan cara membuat record menggunakan query Insert dengan bantuan DBUtils. Kami akan memasukkan catatan di Tabel Karyawan.
Sintaksis
Sintaks untuk membuat kueri diberikan di bawah ini -
String insertQuery ="INSERT INTO employees(id,age,first,last) VALUES (?,?,?,?)";
int insertedRecords = queryRunner.update(conn, insertQuery,104,30, "Sohan","Kumar");
Dimana,
insertQuery - Masukkan kueri yang memiliki placeholder.
queryRunner - Objek QueryRunner untuk memasukkan objek karyawan ke dalam database.
Untuk memahami konsep yang disebutkan di atas terkait dengan DBUtils, mari kita tulis contoh yang akan menjalankan kueri penyisipan. Untuk menulis contoh kita, mari kita buat aplikasi contoh.
Langkah | Deskripsi |
---|---|
1 | Perbarui file MainApp.java yang dibuat di bawah bab DBUtils - Aplikasi Pertama . |
2 | Kompilasi dan jalankan aplikasi seperti yang dijelaskan di bawah ini. |
Berikut ini adalah konten dari 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;
}
}
Berikut ini adalah konten dari MainApp.java mengajukan.
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);
}
}
}
Setelah Anda selesai membuat file sumber, biarkan kami menjalankan aplikasinya. Jika semuanya baik-baik saja dengan aplikasi Anda, itu akan mencetak pesan berikut -
1 record(s) inserted.
Contoh berikut akan mendemonstrasikan cara membaca rekaman menggunakan kueri Baca dengan bantuan DBUtils. Kami akan membaca catatan dari Tabel Karyawan.
Sintaksis
Sintaks untuk permintaan baca disebutkan di bawah ini -
ResultSetHandler<Employee> resultHandler = new BeanHandler<Employee>(Employee.class);
Employee emp = queryRunner.query(conn, "SELECT * FROM employees WHERE first=?", resultHandler, "Sumit");
Dimana,
resultHandler - ResultSetHandler objek untuk memetakan hasil yang disetel ke objek Karyawan.
queryRunner - QueryRunner objek untuk membaca objek karyawan dari database.
Untuk memahami konsep yang disebutkan di atas terkait dengan DBUtils, mari kita tulis contoh yang akan menjalankan kueri baca. Untuk menulis contoh kita, mari kita buat aplikasi contoh.
Langkah | Deskripsi |
---|---|
1 | Perbarui file MainApp.java yang dibuat di bawah bab DBUtils - Aplikasi Pertama . |
2 | Kompilasi dan jalankan aplikasi seperti yang dijelaskan di bawah ini. |
Berikut ini adalah konten dari 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;
}
}
Berikut ini adalah konten dari MainApp.java mengajukan.
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);
}
}
}
Setelah Anda selesai membuat file sumber, biarkan kami menjalankan aplikasinya. Jika semuanya baik-baik saja dengan aplikasi Anda, itu akan mencetak pesan berikut:
ID: 104, Age: 30, First: Sohan, Last: Kumar
Contoh berikut akan mendemonstrasikan cara memperbarui rekaman menggunakan kueri Pembaruan dengan bantuan DBUtils. Kami akan memperbarui catatan di Tabel Karyawan.
Sintaksis
Sintaks untuk kueri pembaruan adalah sebagai berikut -
String updateQuery = "UPDATE employees SET age=? WHERE id=?";
int updatedRecords = queryRunner.update(conn, updateQuery, 33,104);
Dimana,
updateQuery - Perbarui kueri yang memiliki placeholder.
queryRunner - Objek QueryRunner untuk memperbarui objek karyawan di database.
Untuk memahami konsep yang disebutkan di atas terkait dengan DBUtils, mari kita tulis contoh yang akan menjalankan kueri pembaruan. Untuk menulis contoh kita, mari kita buat aplikasi contoh.
Langkah | Deskripsi |
---|---|
1 | Perbarui file MainApp.java yang dibuat di bawah bab DBUtils - Aplikasi Pertama . |
2 | Kompilasi dan jalankan aplikasi seperti yang dijelaskan di bawah ini. |
Berikut ini adalah konten dari 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;
}
}
Berikut ini adalah konten dari MainApp.java mengajukan.
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);
}
}
}
Setelah Anda selesai membuat file sumber, biarkan kami menjalankan aplikasinya. Jika semuanya baik-baik saja dengan aplikasi Anda, itu akan mencetak pesan berikut -
1 record(s) updated.
Contoh berikut akan mendemonstrasikan cara menghapus record menggunakan query Delete dengan bantuan DBUtils. Kami akan menghapus catatan di Tabel Karyawan.
Sintaksis
Sintaks untuk menghapus kueri disebutkan di bawah ini -
String deleteQuery = "DELETE FROM employees WHERE id=?";
int deletedRecords = queryRunner.delete(conn, deleteQuery, 33,104);
Dimana,
deleteQuery - HAPUS kueri yang memiliki tempat penampung.
queryRunner - Objek QueryRunner untuk menghapus objek karyawan di database.
Untuk memahami konsep yang disebutkan di atas terkait dengan DBUtils, mari kita tulis contoh yang akan menjalankan kueri penghapusan. Untuk menulis contoh kita, mari kita buat aplikasi contoh.
Langkah | Deskripsi |
---|---|
1 | Perbarui file MainApp.java yang dibuat di bawah bab DBUtils - Aplikasi Pertama . |
2 | Kompilasi dan jalankan aplikasi seperti yang dijelaskan di bawah ini. |
Berikut ini adalah konten dari 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;
}
}
Berikut ini adalah konten dari MainApp.java mengajukan.
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);
}
}
}
Setelah Anda selesai membuat file sumber, biarkan kami menjalankan aplikasinya. Jika semuanya baik-baik saja dengan aplikasi Anda, itu akan mencetak pesan berikut -
1 record(s) deleted.
Itu org.apache.commons.dbutils.QueryRunnerkelas adalah kelas pusat di perpustakaan DBUtils. Ini mengeksekusi kueri SQL dengan strategi yang dapat dimasukkan untuk menangani ResultSets. Kelas ini aman untuk thread.
Deklarasi Kelas
Berikut adalah deklarasi untuk kelas org.apache.commons.dbutils.QueryRunner -
public class QueryRunner
extends AbstractQueryRunner
Pemakaian
Step 1 - Buat objek koneksi.
Step 2 - Gunakan metode objek QueryRunner untuk membuat operasi database.
Contoh
Contoh berikut akan mendemonstrasikan cara membaca record menggunakan kelas QueryRunner. Kami akan membaca salah satu catatan yang tersedia di Tabel karyawan.
Sintaksis
ResultSetHandler<Employee> resultHandler = new BeanHandler<Employee>(Employee.class);
Employee emp =
queryRunner.query(conn, "SELECT * FROM employees WHERE first=?", resultHandler, "Sumit");
Dimana,
resultHandler - Objek ResultSetHandler untuk memetakan hasil yang disetel ke objek Karyawan.
queryRunner - Objek QueryRunner untuk membaca objek karyawan dari database.
Untuk memahami konsep yang disebutkan di atas terkait dengan DBUtils, mari kita tulis contoh yang akan menjalankan kueri baca. Untuk menulis contoh kita, mari kita buat aplikasi contoh.
Langkah | Deskripsi |
---|---|
1 | Perbarui file MainApp.java yang dibuat di bawah bab DBUtils - Aplikasi Pertama . |
2 | Kompilasi dan jalankan aplikasi seperti yang dijelaskan di bawah ini. |
Berikut ini adalah konten dari 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;
}
}
Berikut ini adalah konten dari MainApp.java mengajukan.
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);
}
}
}
Setelah Anda selesai membuat file sumber, biarkan kami menjalankan aplikasinya. Jika semuanya baik-baik saja dengan aplikasi Anda, itu akan mencetak pesan berikut.
ID: 103, Age: 28, First: Sumit, Last: Mittal
Itu org.apache.commons.dbutils.AsyncQueryRunnerclass membantu menjalankan kueri SQL yang berjalan lama dengan dukungan async. Kelas ini aman untuk thread. Kelas ini mendukung metode yang sama seperti QueryRunner tetapi mengembalikan objek Callable yang bisa digunakan nanti untuk mengambil hasilnya.
Deklarasi Kelas
Berikut adalah deklarasi untuk kelas org.apache.commons.dbutils.AsyncQueryRunner -
public class AsyncQueryRunner
extends AbstractQueryRunner
Pemakaian
Step 1 - Buat objek koneksi.
Step 2 - Gunakan metode objek AsyncQueryRunner untuk membuat operasi database.
Contoh
Contoh berikut akan mendemonstrasikan cara mengupdate record menggunakan class AsyncQueryRunner. Kami akan memperbarui salah satu catatan yang tersedia di Tabel karyawan.
Sintaksis
String updateQuery = "UPDATE employees SET age=? WHERE id=?";
future = asyncQueryRunner.update(conn,
"UPDATE employees SET age=? WHERE id=?", 33,103);
Dimana,
updateQuery - Perbarui kueri yang memiliki placeholder.
asyncQueryRunner - objek asyncQueryRunner untuk memperbarui objek karyawan dalam database.
future - Objek masa depan untuk mengambil hasil nanti.
Untuk memahami konsep yang disebutkan di atas terkait dengan DBUtils, mari kita tulis sebuah contoh yang akan menjalankan kueri pembaruan dalam mode async. Untuk menulis contoh kita, mari kita buat aplikasi contoh.
Langkah | Deskripsi |
---|---|
1 | Perbarui file MainApp.java yang dibuat di bawah bab DBUtils - Aplikasi Pertama . |
2 | Kompilasi dan jalankan aplikasi seperti yang dijelaskan di bawah ini. |
Berikut ini adalah konten dari 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;
}
}
Berikut ini adalah konten dari MainApp.java mengajukan.
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);
}
}
}
Setelah Anda selesai membuat file sumber, biarkan kami menjalankan aplikasinya. Jika semuanya baik-baik saja dengan aplikasi Anda, itu akan mencetak pesan berikut.
1 record(s) updated.
Itu org.apache.commons.dbutils.ResultSetHandler antarmuka bertanggung jawab untuk mengubah ResultSets menjadi objek.
Deklarasi Kelas
Berikut adalah deklarasi untuk kelas org.apache.commons.dbutils.ResultSetHandler -
public interface ResultSetHandler<T>
Pemakaian
Step 1 - Buat objek koneksi.
Step 2 - Membuat implementasi ResultSetHandler.
Step 3 - Meneruskan resultSetHandler ke objek QueryRunner, dan melakukan operasi database.
Contoh
Contoh berikut akan mendemonstrasikan cara memetakan record menggunakan kelas ResultSetHandler. Kami akan membaca salah satu catatan yang tersedia di Tabel Karyawan.
Sintaksis
Employee emp = queryRunner.query(conn, "SELECT * FROM employees WHERE first=?", resultHandler, "Sumit");
Dimana,
resultHandler - Objek ResultSetHandler untuk memetakan hasil yang disetel ke objek Karyawan.
queryRunner - Objek QueryRunner untuk membaca objek karyawan dari database.
Untuk memahami konsep yang disebutkan di atas terkait dengan DBUtils, mari kita tulis contoh yang akan menjalankan kueri baca. Untuk menulis contoh kita, mari kita buat aplikasi contoh.
Langkah | Deskripsi |
---|---|
1 | Perbarui file MainApp.java yang dibuat di bawah bab DBUtils - Aplikasi Pertama . |
2 | Kompilasi dan jalankan aplikasi seperti yang dijelaskan di bawah ini. |
Berikut ini adalah konten dari 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;
}
}
Berikut ini adalah konten dari MainApp.java mengajukan.
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);
}
}
}
Setelah Anda selesai membuat file sumber, biarkan kami menjalankan aplikasinya. Jika semuanya baik-baik saja dengan aplikasi Anda, itu akan mencetak pesan berikut.
Connecting to database...
Result: [103, 33, Sumit, Mittal]
Itu org.apache.commons.dbutils.BeanHandleradalah implementasi antarmuka ResultSetHandler dan bertanggung jawab untuk mengubah baris ResultSet pertama menjadi JavaBean. Kelas ini aman untuk thread.
Deklarasi Kelas
Berikut adalah deklarasi untuk kelas org.apache.commons.dbutils.BeanHandler -
public class BeanHandler<T>
extends Object implements ResultSetHandler<T>
Pemakaian
Step 1 - Buat objek koneksi.
Step 2 - Dapatkan implementasi ResultSetHandler sebagai objek BeanHandler.
Step 3 - Meneruskan resultSetHandler ke objek QueryRunner, dan melakukan operasi database.
Contoh
Contoh berikut akan menunjukkan cara membaca record menggunakan kelas BeanHandler. Kami akan membaca salah satu rekaman yang tersedia di Tabel Karyawan dan memetakannya ke Kacang Karyawan.
Sintaksis
Employee emp = queryRunner.query(conn, "SELECT * FROM employees WHERE first=?", resultHandler, "Sumit");
Dimana,
resultHandler - Objek BeanHandler untuk memetakan hasil ditetapkan ke objek Karyawan.
queryRunner - Objek QueryRunner untuk membaca objek karyawan dari database.
Untuk memahami konsep yang disebutkan di atas terkait dengan DBUtils, mari kita tulis contoh yang akan menjalankan kueri baca. Untuk menulis contoh kita, mari kita buat aplikasi contoh.
Langkah | Deskripsi |
---|---|
1 | Perbarui file MainApp.java yang dibuat di bawah bab DBUtils - Aplikasi Pertama . |
2 | Kompilasi dan jalankan aplikasi seperti yang dijelaskan di bawah ini. |
Berikut ini adalah konten dari 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;
}
}
Berikut ini adalah konten dari MainApp.java mengajukan.
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);
}
}
}
Setelah Anda selesai membuat file sumber, biarkan kami menjalankan aplikasinya. Jika semuanya baik-baik saja dengan aplikasi Anda, itu akan mencetak pesan berikut.
ID: 103, Age: 28, First: Sumit, Last: Mittal
Itu org.apache.commons.dbutils.BeanListHandleradalah implementasi antarmuka ResultSetHandler dan bertanggung jawab untuk mengubah baris ResultSet menjadi daftar Java Bean. Kelas ini aman untuk thread.
Deklarasi Kelas
Berikut adalah deklarasi untuk kelas org.apache.commons.dbutils.BeanListHandler -
public class BeanListHandler<T>
extends Object implements ResultSetHandler<List<T>>
Pemakaian
Step 1 - Buat objek koneksi.
Step 2 - Dapatkan implementasi ResultSetHandler sebagai objek BeanListHandler.
Step 3 - Meneruskan resultSetHandler ke objek QueryRunner, dan melakukan operasi database.
Contoh
Contoh berikut akan menunjukkan cara membaca daftar record menggunakan kelas BeanListHandler. Kami akan membaca catatan yang tersedia di Tabel Karyawan dan memetakannya ke daftar kacang Karyawan.
Sintaksis
List<Employee> empList = queryRunner.query(conn, "SELECT * FROM employees", resultHandler);
Dimana,
resultHandler - Objek BeanListHandler untuk memetakan kumpulan hasil ke daftar objek Karyawan.
queryRunner - Objek QueryRunner untuk membaca objek karyawan dari database.
Untuk memahami konsep yang disebutkan di atas terkait dengan DBUtils, mari kita tulis contoh yang akan menjalankan kueri baca. Untuk menulis contoh kita, mari kita buat aplikasi contoh.
Langkah | Deskripsi |
---|---|
1 | Perbarui file MainApp.java yang dibuat di bawah bab DBUtils - Aplikasi Pertama . |
2 | Kompilasi dan jalankan aplikasi seperti yang dijelaskan di bawah ini. |
Berikut ini adalah konten dari 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;
}
}
Berikut ini adalah konten dari MainApp.java mengajukan.
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);
}
}
}
Setelah Anda selesai membuat file sumber, biarkan kami menjalankan aplikasinya. Jika semuanya baik-baik saja dengan aplikasi Anda, itu akan mencetak pesan berikut.
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
Itu org.apache.commons.dbutils.ArrayListHandleradalah implementasi antarmuka ResultSetHandler dan bertanggung jawab untuk mengubah baris ResultSet menjadi objek []. Kelas ini aman untuk thread.
Deklarasi Kelas
Berikut adalah deklarasi untuk kelas org.apache.commons.dbutils.ArrayListHandler -
public class ArrayListHandler
extends AbstractListHandler<Object[]>
Pemakaian
Step 1 - Buat objek koneksi.
Step 2 - Dapatkan implementasi ResultSetHandler sebagai objek ArrayListHandler.
Step 3 - Meneruskan resultSetHandler ke objek QueryRunner, dan melakukan operasi database.
Contoh
Contoh berikut akan menunjukkan cara membaca daftar rekaman menggunakan kelas ArrayListHandler. Kami akan membaca catatan yang tersedia di Tabel Karyawan sebagai objek [].
Sintaksis
List<Object> result = queryRunner.query(conn, "SELECT * FROM employees", new ArrayListHandler());
Dimana,
resultHandler - ArrayListHandler objek untuk memetakan hasil set ke daftar objek [].
queryRunner - Objek QueryRunner untuk membaca objek karyawan dari database.
Untuk memahami konsep yang disebutkan di atas terkait dengan DBUtils, mari kita tulis contoh yang akan menjalankan kueri baca. Untuk menulis contoh kita, mari kita buat aplikasi contoh.
Langkah | Deskripsi |
---|---|
1 | Perbarui file MainApp.java yang dibuat di bawah bab DBUtils - Aplikasi Pertama . |
2 | Kompilasi dan jalankan aplikasi seperti yang dijelaskan di bawah ini. |
Berikut ini adalah konten dari 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;
}
}
Berikut ini adalah konten dari MainApp.java mengajukan.
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);
}
}
}
Setelah Anda selesai membuat file sumber, biarkan kami menjalankan aplikasinya. Jika semuanya baik-baik saja dengan aplikasi Anda, itu akan mencetak pesan berikut.
[100, 18, Zara, Ali]
[101, 25, Mahnaz, Fatma]
[102, 30, Zaid, Khan]
[103, 28, Sumit, Mittal]
Itu org.apache.commons.dbutils.MapListHandleradalah implementasi antarmuka ResultSetHandler dan bertanggung jawab untuk mengubah baris ResultSet menjadi daftar Maps. Kelas ini aman untuk thread.
Deklarasi Kelas
Berikut adalah deklarasi untuk kelas org.apache.commons.dbutils.MapListHandler -
public class MapListHandler
extends AbstractListHandler<Map<String,Object>>
Pemakaian
Step 1 - Buat objek koneksi.
Step 2 - Dapatkan implementasi ResultSetHandler sebagai objek MapListHandler.
Step 3 - Meneruskan resultSetHandler ke objek QueryRunner, dan melakukan operasi database.
Contoh
Contoh berikut akan menunjukkan cara membaca daftar rekaman menggunakan kelas MapListHandler. Kami akan membaca catatan yang tersedia di Tabel Karyawan sebagai daftar peta.
Sintaksis
List<Map<String, Object>> result = queryRunner.query(conn, "SELECT * FROM employees", new MapListHandler());
Dimana,
resultHandler - Objek MapListHandler untuk memetakan hasil set ke daftar peta.
queryRunner - Objek QueryRunner untuk membaca objek karyawan dari database.
Untuk memahami konsep yang disebutkan di atas terkait dengan DBUtils, mari kita tulis contoh yang akan menjalankan kueri baca. Untuk menulis contoh kita, mari kita buat aplikasi contoh.
Langkah | Deskripsi |
---|---|
1 | Perbarui file MainApp.java yang dibuat di bawah bab DBUtils - Aplikasi Pertama . |
2 | Kompilasi dan jalankan aplikasi seperti yang dijelaskan di bawah ini. |
Berikut ini adalah konten dari 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;
}
}
Berikut ini adalah konten dari MainApp.java mengajukan.
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);
}
}
}
Setelah Anda selesai membuat file sumber, biarkan kami menjalankan aplikasinya. Jika semuanya baik-baik saja dengan aplikasi Anda, itu akan mencetak pesan berikut.
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}]
Kita dapat membuat handler kustom kita sendiri dengan mengimplementasikan antarmuka ResultSetHandler atau dengan memperluas implementasi ResultSetHandler yang ada. Dalam contoh yang diberikan di bawah ini, kami telah membuat Penangan Kustom, EmployeeHandler dengan memperluas kelas BeanHandler.
Untuk memahami konsep yang disebutkan di atas terkait dengan DBUtils, mari kita tulis contoh yang akan menjalankan kueri baca. Untuk menulis contoh kita, mari kita buat aplikasi contoh.
Langkah | Deskripsi |
---|---|
1 | Perbarui file MainApp.java yang dibuat di bawah bab DBUtils - Aplikasi Pertama . |
2 | Kompilasi dan jalankan aplikasi seperti yang dijelaskan di bawah ini. |
Berikut ini adalah konten dari 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;
}
}
Berikut ini adalah konten dari EmployeeHandler.java mengajukan.
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;
}
}
Berikut ini adalah konten dari MainApp.java mengajukan.
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);
}
}
}
Setelah Anda selesai membuat file sumber, biarkan kami menjalankan aplikasinya. Jika semuanya baik-baik saja dengan aplikasi Anda, itu akan mencetak pesan berikut.
ID: 103, Age: 28, Name: Sumit, Mittal
Jika nama kolom dalam tabel database dan nama objek javabean yang setara tidak sama, maka kita dapat memetakannya dengan menggunakan objek BasicRowProcessor yang disesuaikan. Lihat contoh di bawah ini.
Untuk memahami konsep yang disebutkan di atas terkait dengan DBUtils, mari kita tulis contoh yang akan menjalankan kueri baca. Untuk menulis contoh kita, mari kita buat aplikasi contoh.
Langkah | Deskripsi |
---|---|
1 | Perbarui file MainApp.java yang dibuat di bawah bab DBUtils - Aplikasi Pertama . |
2 | Kompilasi dan jalankan aplikasi seperti yang dijelaskan di bawah ini. |
Berikut ini adalah konten dari 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;
}
}
Berikut ini adalah konten dari EmployeeHandler.java mengajukan.
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;
}
}
Berikut ini adalah konten dari MainApp.java mengajukan.
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);
}
}
}
Setelah Anda selesai membuat file sumber, biarkan kami menjalankan aplikasinya. Jika semuanya baik-baik saja dengan aplikasi Anda, itu akan mencetak pesan berikut.
ID: 103, Age: 28, Name: Sumit, Mittal
Sejauh ini, kami telah menggunakan objek koneksi saat menggunakan QueryRunner. Kami juga dapat menggunakan sumber data dengan mudah. Contoh berikut akan menunjukkan cara membaca record menggunakan kueri Baca dengan bantuan QueryRunner dan sumber data. Kami akan membaca catatan dari Tabel Karyawan.
Sintaksis
QueryRunner queryRunner = new QueryRunner( dataSource );
Employee emp = queryRunner.query("SELECT * FROM employees WHERE first=?", resultHandler, "Sumit");
Dimana,
dataSource - Objek DataSource dikonfigurasi.
resultHandler - Objek ResultSetHandler untuk memetakan hasil yang disetel ke objek Karyawan.
queryRunner - Objek QueryRunner untuk membaca objek karyawan dari database.
Untuk memahami konsep yang disebutkan di atas terkait dengan DBUtils, mari kita tulis contoh yang akan menjalankan kueri baca. Untuk menulis contoh kita, mari kita buat aplikasi contoh.
Langkah | Deskripsi |
---|---|
1 | Perbarui file MainApp.java yang dibuat di bawah bab DBUtils - Aplikasi Pertama . |
2 | Kompilasi dan jalankan aplikasi seperti yang dijelaskan di bawah ini. |
Berikut ini adalah konten dari 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;
}
}
Berikut ini adalah konten dari 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;
}
}
Berikut ini adalah konten dari MainApp.java mengajukan.
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());
}
}
Setelah Anda selesai membuat file sumber, biarkan kami menjalankan aplikasinya. Jika semuanya baik-baik saja dengan aplikasi Anda, itu akan mencetak pesan berikut.
ID: 103, Age: 33, First: Sumit, Last: Mittal