Apache Commons DBUtils - Guia rápido
A biblioteca Apache Commons DbUtils é um conjunto bem pequeno de classes, que são projetadas para facilitar o processamento de chamadas JDBC sem vazamento de recursos e para ter um código mais limpo. Como a limpeza de recursos JDBC é bastante tediosa e sujeita a erros, as classes DBUtils ajudam a abstrair o código padrão, de modo que os desenvolvedores possam se concentrar apenas nas operações relacionadas ao banco de dados.
Vantagens de DBUtils
As vantagens de usar DBUtils Apache Commons são explicadas abaixo -
No Resource Leakage - As classes DBUtils garantem que nenhum vazamento de recursos aconteça.
Clean & Clear code - As classes DBUtils fornecem código limpo e claro para fazer as operações do banco de dados sem a necessidade de escrever um código de limpeza ou prevenção de vazamento de recursos.
Bean Mapping - A classe DBUtils oferece suporte para preencher JavaBeans automaticamente a partir de um conjunto de resultados.
Princípios de Design DBUtils
Os princípios de design do Apache Commons DBUtils são os seguintes -
Small - A biblioteca DBUtils é muito pequena em tamanho com menos classes, de modo que é fácil de entender e usar.
Transparent- A biblioteca DBUtils não está fazendo muito trabalho nos bastidores. Ele simplesmente pega a consulta e executa.
Fast - As classes da biblioteca DBUtils não criam muitos objetos de fundo e são bastante rápidas na execução de operações de banco de dados.
Para começar a desenvolver com DBUtils, você deve configurar seu ambiente DBUtils seguindo as etapas abaixo. Presumimos que você esteja trabalhando em uma plataforma Windows.
Instale Java
Instale o J2SE Development Kit 5.0 (JDK 5.0) do site oficial do Java .
Certifique-se de que as seguintes variáveis de ambiente sejam definidas conforme descrito abaixo -
JAVA_HOME - Esta variável de ambiente deve apontar para o diretório onde você instalou o JDK, por exemplo, C: \ Arquivos de programas \ Java \ jdk1.5.0.
CLASSPATH - Esta variável de ambiente deve ter os caminhos apropriados definidos, por exemplo, C: \ Arquivos de programas \ Java \ jdk1.5.0_20 \ jre \ lib.
PATH - Esta variável de ambiente deve apontar para o compartimento JRE apropriado, por exemplo, C: \ Arquivos de programas \ Java \ jre1.5.0_20 \ bin.
É possível que você já tenha essas variáveis definidas, mas apenas para ter certeza, veja como verificar.
Vá para o painel de controle e clique duas vezes em Sistema. Se você for um usuário do Windows XP, é possível que tenha que abrir Desempenho e manutenção antes de ver o ícone Sistema.
Vá para a guia Avançado e clique em Variáveis de ambiente.
Agora verifique se todas as variáveis mencionadas acima estão definidas corretamente.
Instalar banco de dados
A coisa mais importante de que você precisa, é claro, é um banco de dados em execução real com uma tabela que você pode consultar e modificar.
Instale um banco de dados que seja mais adequado para você. Você pode ter muitas opções e as mais comuns são -
MySQL DB:MySQL é um banco de dados de código aberto. Você pode baixá-lo do site oficial do MySQL . Recomendamos baixar a instalação completa do Windows.
Além disso, baixe e instale o MySQL Administrator e também o MySQL Query Browser . Estas são ferramentas baseadas em GUI que tornarão seu desenvolvimento muito mais fácil.
Finalmente, baixe e descompacte o MySQL Connector / J (o driver JDBC do MySQL) em um diretório conveniente. Para o propósito deste tutorial, assumiremos que você instalou o driver em C: \ Arquivos de Programas \ MySQL \ mysql-connector-java-5.1.8.
Da mesma forma, defina a variável CLASSPATH para C: \ Arquivos de programas \ MySQL \ mysql-connector-java-5.1.8 \ mysql-connector-java-5.1.8-bin.jar. A versão do driver pode variar de acordo com a instalação.
PostgreSQL DB:PostgreSQL é um banco de dados de código aberto. Você pode baixá-lo do site oficial do PostgreSQL .
A instalação do Postgres contém uma ferramenta administrativa baseada em GUI chamada pgAdmin III. Os drivers JDBC também estão incluídos como parte da instalação.
Oracle DB- Oracle DB é um banco de dados comercial vendido pela Oracle. Presumimos que você tenha a mídia de distribuição necessária para instalá-lo.
A instalação do Oracle inclui uma ferramenta administrativa baseada em GUI chamada Enterprise Manager. Os drivers JDBC também são incluídos como parte da instalação.
Instalar drivers de banco de dados
O JDK mais recente inclui um driver JDBC-ODBC Bridge que disponibiliza a maioria dos drivers Open Database Connectivity (ODBC) para programadores que usam a API JDBC.
Hoje em dia, a maioria dos fornecedores de banco de dados está fornecendo drivers JDBC apropriados junto com a instalação do banco de dados. Portanto, você não deve se preocupar com esta parte.
Definir credencial de banco de dados
Para este tutorial, vamos usar o banco de dados MySQL. Quando você instala qualquer um dos bancos de dados acima, seu ID de administrador é definido comoroot e dá a possibilidade de definir uma senha de sua escolha.
Usando o ID e senha de root, você pode criar outro ID de usuário e senha ou pode usar o ID e senha de root para seu aplicativo JDBC.
Existem várias operações de banco de dados, como criação e exclusão de banco de dados, que precisariam de ID e senha de administrador.
Para o restante do tutorial JDBC, usaríamos banco de dados MySQL com username como ID e password como senha.
Se você não tiver privilégios suficientes para criar novos usuários, poderá pedir ao Administrador do Banco de Dados (DBA) para criar um ID de usuário e senha para você.
Criar banco de dados
Para criar o emp banco de dados, use as seguintes etapas -
Passo 1
Abra um Command Prompt e mude para o diretório de instalação da seguinte forma -
C:\>
C:\>cd Program Files\MySQL\bin
C:\Program Files\MySQL\bin>
Note: O caminho para mysqld.exepode variar dependendo do local de instalação do MySQL em seu sistema. Você também pode verificar a documentação sobre como iniciar e parar o servidor de banco de dados.
Passo 2
Inicie o servidor de banco de dados executando o seguinte comando, se ainda não estiver em execução.
C:\Program Files\MySQL\bin>mysqld
C:\Program Files\MySQL\bin>
etapa 3
Crie o emp banco de dados executando o seguinte comando -
C:\Program Files\MySQL\bin> mysqladmin create emp -u root -p
Enter password: ********
C:\Program Files\MySQL\bin>
Criar a tabela
Para criar o Employees tabela no banco de dados emp, use as seguintes etapas -
Passo 1
Abra um Command Prompt e mude para o diretório de instalação da seguinte forma -
C:\>
C:\>cd Program Files\MySQL\bin
C:\Program Files\MySQL\bin>
Passo 2
Faça login no banco de dados da seguinte forma -
C:\Program Files\MySQL\bin>mysql -u root -p
Enter password: ********
mysql>
etapa 3
Crie a mesa Employee como segue -
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>
Criar registros de dados
Finalmente, você cria alguns registros na tabela Employee da seguinte forma -
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>
Para um entendimento completo do banco de dados MySQL, estude o Tutorial do MySQL .
Baixe Commons DBUtils Archive
Baixe a versão mais recente do arquivo jar Apache Common DBUtils em commons-dbutils-1.7-bin.zip , conector 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 e Apache Commons Logging commons-logging-1.2-bin.zip . No momento em que escrevemos este tutorial, baixamos 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 e copiou-o na pasta C: \> Apache.
SO | Nome do arquivo |
---|---|
janelas | commons-dbutils-1.7-bin.zip |
Linux | commons-dbutils-1.7-bin.tar.gz |
Mac | commons-dbutils-1.7-bin.tar.gz |
Definir ambiente DBUtils comum do Apache
Colocou o APACHE_HOMEvariável de ambiente para apontar para o local do diretório base onde o jar do Apache está armazenado em sua máquina. Supondo que extraímos commons-dbutils-1.7-bin.zip na pasta Apache em vários sistemas operacionais como segue.
SO | Resultado |
---|---|
janelas | Defina a variável de ambiente APACHE_HOME para C: \ Apache |
Linux | export APACHE_HOME = / usr / local / Apache |
Mac | export APACHE_HOME = / Library / Apache |
Definir variável CLASSPATH
Colocou o CLASSPATHvariável de ambiente para apontar para o local do jar IO comum. Supondo que você tenha armazenado commons-dbutils-1.7-bin.zip na pasta Apache em vários sistemas operacionais como segue.
SO | Resultado |
---|---|
janelas | Defina a variável de ambiente CLASSPATH como% CLASSPATH%;% APACHE_HOME% \ commons-dbutils-1.7.jar; mysql-connector-java-5.1.28.jar; commons-dbcp2-2.1.1.jar; commons-pool2-2.4. 3.jar; commons-logging-1.2.jar; |
Linux | export CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-dbutils-1.7.jar: mysql-connector-java-5.1.28.jar: commons-dbcp2-2.1.1: commons-pool2-2.4.3.jar: commons-logging -1.2.jar. |
Mac | export CLASSPATH = $ CLASSPATH: $ APACHE_HOME / commons-dbutils-1.7.jar: mysql-connector-java-5.1.28: commons-dbcp2-2.1.1.jar: commons-pool2-2.4.3.jar; commons-logging -1.2.jar. |
Agora você está pronto para começar a experimentar DBUtils. O próximo capítulo fornece um exemplo de programação DBUtils.
Este capítulo fornece um exemplo de como criar um aplicativo JDBC simples usando a biblioteca DBUtils. Isso mostrará como abrir uma conexão de banco de dados, executar uma consulta SQL e exibir os resultados.
Todas as etapas mencionadas neste exemplo de modelo seriam explicadas nos capítulos subsequentes deste tutorial.
Criação de aplicativo JDBC
Existem seis etapas a seguir envolvidas na construção de um aplicativo JDBC -
Import the packages- Requer que você inclua os pacotes contendo as classes JDBC que são necessárias para a programação do banco de dados. Na maioria das vezes, usandoimport java.sql.* será suficiente.
Register the JDBC driver - Requer que você inicialize um driver, para que possa abrir um canal de comunicação com o banco de dados.
Open a connection - Requer o uso do DriverManager.getConnection() método para criar um objeto Connection, que representa uma conexão física com o banco de dados.
Execute a query - Requer o uso de um objeto do tipo Instrução para construir e enviar uma instrução SQL para o banco de dados.
Extract data from result set - Requer que você use o apropriado ResultSet.getXXX() método para recuperar os dados do conjunto de resultados.
Clean up the environment - Requer o fechamento explícito de todos os recursos do banco de dados em vez de depender da coleta de lixo da JVM.
Código de amostra
Este exemplo de amostra pode servir como um modelo, quando você precisar criar seu próprio aplicativo JDBC no futuro.
Este código de amostra foi escrito com base na configuração do ambiente e do banco de dados feita no capítulo anterior.
Copie e cole o seguinte exemplo em MainApp.java, compile e execute da seguinte forma -
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
O programa é fornecido abaixo -
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;
}
}
Agora vamos compilar o exemplo acima da seguinte maneira -
C:\>javac MainApp.java Employee.java
C:\>
Quando você corre MainApp, ele produz o seguinte resultado -
C:\>java MainApp
Connecting to database...
ID: 103, Age: 28, First: Sumit, Last: Mittal
C:\>
O exemplo a seguir demonstrará como criar um registro usando a consulta Insert com a ajuda de DBUtils. Vamos inserir um registro na Tabela de Funcionários.
Sintaxe
A sintaxe para criar uma consulta é fornecida abaixo -
String insertQuery ="INSERT INTO employees(id,age,first,last) VALUES (?,?,?,?)";
int insertedRecords = queryRunner.update(conn, insertQuery,104,30, "Sohan","Kumar");
Onde,
insertQuery - Insira a consulta com espaços reservados.
queryRunner - Objeto QueryRunner para inserir o objeto funcionário no banco de dados.
Para entender os conceitos mencionados acima relacionados aos DBUtils, vamos escrever um exemplo que irá executar uma consulta de inserção. Para escrever nosso exemplo, vamos criar um aplicativo de amostra.
Degrau | Descrição |
---|---|
1 | Atualize o arquivo MainApp.java criado no capítulo DBUtils - Primeiro Aplicativo . |
2 | Compile e execute o aplicativo conforme explicado a seguir. |
A seguir está o conteúdo do Employee.java.
public class Employee {
private int id;
private int age;
private String first;
private String last;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getFirst() {
return first;
}
public void setFirst(String first) {
this.first = first;
}
public String getLast() {
return last;
}
public void setLast(String last) {
this.last = last;
}
}
A seguir está o conteúdo do MainApp.java Arquivo.
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);
}
}
}
Quando terminar de criar os arquivos de origem, vamos executar o aplicativo. Se estiver tudo bem com o seu aplicativo, ele imprimirá a seguinte mensagem -
1 record(s) inserted.
O exemplo a seguir demonstrará como ler um registro usando a consulta Read com a ajuda de DBUtils. Vamos ler um registro da Tabela de Funcionários.
Sintaxe
A sintaxe para consulta de leitura é mencionada abaixo -
ResultSetHandler<Employee> resultHandler = new BeanHandler<Employee>(Employee.class);
Employee emp = queryRunner.query(conn, "SELECT * FROM employees WHERE first=?", resultHandler, "Sumit");
Onde,
resultHandler - Objeto ResultSetHandler para mapear o conjunto de resultados para o objeto Employee.
queryRunner - Objeto QueryRunner para ler um objeto de funcionário do banco de dados.
Para entender os conceitos mencionados acima relacionados aos DBUtils, vamos escrever um exemplo que irá executar uma consulta de leitura. Para escrever nosso exemplo, vamos criar um aplicativo de amostra.
Degrau | Descrição |
---|---|
1 | Atualize o arquivo MainApp.java criado no capítulo DBUtils - Primeiro Aplicativo . |
2 | Compile e execute o aplicativo conforme explicado a seguir. |
A seguir está o conteúdo do Employee.java.
public class Employee {
private int id;
private int age;
private String first;
private String last;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getFirst() {
return first;
}
public void setFirst(String first) {
this.first = first;
}
public String getLast() {
return last;
}
public void setLast(String last) {
this.last = last;
}
}
A seguir está o conteúdo do MainApp.java Arquivo.
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);
}
}
}
Quando terminar de criar os arquivos de origem, vamos executar o aplicativo. Se tudo estiver bem com seu aplicativo, ele imprimirá a seguinte mensagem:
ID: 104, Age: 30, First: Sohan, Last: Kumar
O exemplo a seguir demonstrará como atualizar um registro usando a consulta de atualização com a ajuda de DBUtils. Atualizaremos um registro na Tabela de funcionários.
Sintaxe
A sintaxe para a consulta de atualização é a seguinte -
String updateQuery = "UPDATE employees SET age=? WHERE id=?";
int updatedRecords = queryRunner.update(conn, updateQuery, 33,104);
Onde,
updateQuery - Atualizar a consulta com marcadores.
queryRunner - Objeto QueryRunner para atualizar o objeto funcionário no banco de dados.
Para entender os conceitos mencionados acima relacionados aos DBUtils, vamos escrever um exemplo que irá executar uma consulta de atualização. Para escrever nosso exemplo, vamos criar um aplicativo de amostra.
Degrau | Descrição |
---|---|
1 | Atualize o arquivo MainApp.java criado no capítulo DBUtils - Primeiro Aplicativo . |
2 | Compile e execute o aplicativo conforme explicado a seguir. |
A seguir está o conteúdo do Employee.java.
public class Employee {
private int id;
private int age;
private String first;
private String last;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getFirst() {
return first;
}
public void setFirst(String first) {
this.first = first;
}
public String getLast() {
return last;
}
public void setLast(String last) {
this.last = last;
}
}
A seguir está o conteúdo do MainApp.java Arquivo.
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);
}
}
}
Quando terminar de criar os arquivos de origem, vamos executar o aplicativo. Se estiver tudo bem com o seu aplicativo, ele imprimirá a seguinte mensagem -
1 record(s) updated.
O exemplo a seguir demonstrará como excluir um registro usando a consulta Delete com a ajuda de DBUtils. Vamos deletar um registro na Tabela de Funcionários.
Sintaxe
A sintaxe para excluir consulta é mencionada abaixo -
String deleteQuery = "DELETE FROM employees WHERE id=?";
int deletedRecords = queryRunner.delete(conn, deleteQuery, 33,104);
Onde,
deleteQuery - DELETE a consulta com marcadores.
queryRunner - Objeto QueryRunner para excluir o objeto funcionário no banco de dados.
Para entender os conceitos mencionados acima relacionados aos DBUtils, vamos escrever um exemplo que executará uma consulta de exclusão. Para escrever nosso exemplo, vamos criar um aplicativo de amostra.
Degrau | Descrição |
---|---|
1 | Atualize o arquivo MainApp.java criado no capítulo DBUtils - Primeiro Aplicativo . |
2 | Compile e execute o aplicativo conforme explicado a seguir. |
A seguir está o conteúdo do Employee.java.
public class Employee {
private int id;
private int age;
private String first;
private String last;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getFirst() {
return first;
}
public void setFirst(String first) {
this.first = first;
}
public String getLast() {
return last;
}
public void setLast(String last) {
this.last = last;
}
}
A seguir está o conteúdo do MainApp.java Arquivo.
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);
}
}
}
Quando terminar de criar os arquivos de origem, vamos executar o aplicativo. Se estiver tudo bem com o seu aplicativo, ele imprimirá a seguinte mensagem -
1 record(s) deleted.
o org.apache.commons.dbutils.QueryRunnerclass é a classe central na biblioteca DBUtils. Ele executa consultas SQL com estratégias plugáveis para lidar com ResultSets. Esta classe é thread-safe.
Declaração de Classe
A seguir está a declaração para a classe org.apache.commons.dbutils.QueryRunner -
public class QueryRunner
extends AbstractQueryRunner
Uso
Step 1 - Crie um objeto de conexão.
Step 2 - Use métodos de objeto QueryRunner para fazer operações de banco de dados.
Exemplo
O exemplo a seguir demonstrará como ler um registro usando a classe QueryRunner. Vamos ler um dos registros disponíveis na Tabela de funcionários.
Sintaxe
ResultSetHandler<Employee> resultHandler = new BeanHandler<Employee>(Employee.class);
Employee emp =
queryRunner.query(conn, "SELECT * FROM employees WHERE first=?", resultHandler, "Sumit");
Onde,
resultHandler - Objeto ResultSetHandler para mapear o conjunto de resultados para o objeto Employee.
queryRunner - Objeto QueryRunner para ler objetos de funcionários do banco de dados.
Para entender os conceitos mencionados acima relacionados aos DBUtils, vamos escrever um exemplo que irá executar uma consulta de leitura. Para escrever nosso exemplo, vamos criar um aplicativo de amostra.
Degrau | Descrição |
---|---|
1 | Atualize o arquivo MainApp.java criado no capítulo DBUtils - Primeiro Aplicativo . |
2 | Compile e execute o aplicativo conforme explicado a seguir. |
A seguir está o conteúdo do Employee.java.
public class Employee {
private int id;
private int age;
private String first;
private String last;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getFirst() {
return first;
}
public void setFirst(String first) {
this.first = first;
}
public String getLast() {
return last;
}
public void setLast(String last) {
this.last = last;
}
}
A seguir está o conteúdo do MainApp.java Arquivo.
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);
}
}
}
Quando terminar de criar os arquivos de origem, vamos executar o aplicativo. Se tudo estiver bem com o seu aplicativo, ele imprimirá a seguinte mensagem.
ID: 103, Age: 28, First: Sumit, Last: Mittal
o org.apache.commons.dbutils.AsyncQueryRunnerclasse ajuda a executar consultas SQL de longa duração com suporte assíncrono. Esta classe é thread-safe. Esta classe suporta os mesmos métodos de QueryRunner, mas retorna objetos Callable que podem ser usados posteriormente para recuperar o resultado.
Declaração de Classe
A seguir está a declaração para a classe org.apache.commons.dbutils.AsyncQueryRunner -
public class AsyncQueryRunner
extends AbstractQueryRunner
Uso
Step 1 - Crie um objeto de conexão.
Step 2 - Use métodos de objeto AsyncQueryRunner para fazer operações de banco de dados.
Exemplo
O exemplo a seguir demonstrará como atualizar um registro usando a classe AsyncQueryRunner. Atualizaremos um dos registros disponíveis na Tabela de funcionários.
Sintaxe
String updateQuery = "UPDATE employees SET age=? WHERE id=?";
future = asyncQueryRunner.update(conn,
"UPDATE employees SET age=? WHERE id=?", 33,103);
Onde,
updateQuery - Atualizar a consulta com marcadores.
asyncQueryRunner - objeto asyncQueryRunner para atualizar o objeto funcionário no banco de dados.
future - Objeto futuro para recuperar o resultado mais tarde.
Para entender os conceitos mencionados acima relacionados aos DBUtils, vamos escrever um exemplo que executará uma consulta de atualização no modo assíncrono. Para escrever nosso exemplo, vamos criar um aplicativo de amostra.
Degrau | Descrição |
---|---|
1 | Atualize o arquivo MainApp.java criado no capítulo DBUtils - Primeiro Aplicativo . |
2 | Compile e execute o aplicativo conforme explicado a seguir. |
A seguir está o conteúdo do Employee.java.
public class Employee {
private int id;
private int age;
private String first;
private String last;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getFirst() {
return first;
}
public void setFirst(String first) {
this.first = first;
}
public String getLast() {
return last;
}
public void setLast(String last) {
this.last = last;
}
}
A seguir está o conteúdo do MainApp.java Arquivo.
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);
}
}
}
Quando terminar de criar os arquivos de origem, vamos executar o aplicativo. Se tudo estiver bem com o seu aplicativo, ele imprimirá a seguinte mensagem.
1 record(s) updated.
o org.apache.commons.dbutils.ResultSetHandler interface é responsável por converter ResultSets em objetos.
Declaração de Classe
A seguir está a declaração para a classe org.apache.commons.dbutils.ResultSetHandler -
public interface ResultSetHandler<T>
Uso
Step 1 - Crie um objeto de conexão.
Step 2 - Criar implementação de ResultSetHandler.
Step 3 - Passe resultSetHandler para o objeto QueryRunner e faça operações de banco de dados.
Exemplo
O exemplo a seguir demonstrará como mapear um registro usando a classe ResultSetHandler. Leremos um dos registros disponíveis na Tabela de funcionários.
Sintaxe
Employee emp = queryRunner.query(conn, "SELECT * FROM employees WHERE first=?", resultHandler, "Sumit");
Onde,
resultHandler - Objeto ResultSetHandler para mapear o conjunto de resultados para o objeto Employee.
queryRunner - Objeto QueryRunner para ler objetos de funcionários do banco de dados.
Para entender os conceitos mencionados acima relacionados aos DBUtils, vamos escrever um exemplo que irá executar uma consulta de leitura. Para escrever nosso exemplo, vamos criar um aplicativo de amostra.
Degrau | Descrição |
---|---|
1 | Atualize o arquivo MainApp.java criado no capítulo DBUtils - Primeiro Aplicativo . |
2 | Compile e execute o aplicativo conforme explicado a seguir. |
A seguir está o conteúdo do Employee.java.
public class Employee {
private int id;
private int age;
private String first;
private String last;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getFirst() {
return first;
}
public void setFirst(String first) {
this.first = first;
}
public String getLast() {
return last;
}
public void setLast(String last) {
this.last = last;
}
}
A seguir está o conteúdo do MainApp.java Arquivo.
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);
}
}
}
Quando terminar de criar os arquivos de origem, vamos executar o aplicativo. Se tudo estiver bem com o seu aplicativo, ele imprimirá a seguinte mensagem.
Connecting to database...
Result: [103, 33, Sumit, Mittal]
o org.apache.commons.dbutils.BeanHandleré a implementação da interface ResultSetHandler e é responsável por converter a primeira linha ResultSet em um JavaBean. Esta classe é thread-safe.
Declaração de Classe
A seguir está a declaração para a classe org.apache.commons.dbutils.BeanHandler -
public class BeanHandler<T>
extends Object implements ResultSetHandler<T>
Uso
Step 1 - Crie um objeto de conexão.
Step 2 - Obtenha a implementação de ResultSetHandler como objeto BeanHandler.
Step 3 - Passe resultSetHandler para o objeto QueryRunner e faça operações de banco de dados.
Exemplo
O exemplo a seguir demonstrará como ler um registro usando a classe BeanHandler. Leremos um dos registros disponíveis na Tabela de funcionários e mapearemos para o bean Employee.
Sintaxe
Employee emp = queryRunner.query(conn, "SELECT * FROM employees WHERE first=?", resultHandler, "Sumit");
Onde,
resultHandler - Objeto BeanHandler para mapear o conjunto de resultados para o objeto Employee.
queryRunner - Objeto QueryRunner para ler objetos de funcionários do banco de dados.
Para entender os conceitos mencionados acima relacionados aos DBUtils, vamos escrever um exemplo que irá executar uma consulta de leitura. Para escrever nosso exemplo, vamos criar um aplicativo de amostra.
Degrau | Descrição |
---|---|
1 | Atualize o arquivo MainApp.java criado no capítulo DBUtils - Primeiro Aplicativo . |
2 | Compile e execute o aplicativo conforme explicado a seguir. |
A seguir está o conteúdo do Employee.java.
public class Employee {
private int id;
private int age;
private String first;
private String last;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getFirst() {
return first;
}
public void setFirst(String first) {
this.first = first;
}
public String getLast() {
return last;
}
public void setLast(String last) {
this.last = last;
}
}
A seguir está o conteúdo do MainApp.java Arquivo.
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);
}
}
}
Quando terminar de criar os arquivos de origem, vamos executar o aplicativo. Se tudo estiver bem com o seu aplicativo, ele imprimirá a seguinte mensagem.
ID: 103, Age: 28, First: Sumit, Last: Mittal
o org.apache.commons.dbutils.BeanListHandleré a implementação da interface ResultSetHandler e é responsável por converter as linhas ResultSet em lista de Java Bean. Esta classe é thread-safe.
Declaração de Classe
A seguir está a declaração para a classe org.apache.commons.dbutils.BeanListHandler -
public class BeanListHandler<T>
extends Object implements ResultSetHandler<List<T>>
Uso
Step 1 - Crie um objeto de conexão.
Step 2 - Obtenha a implementação de ResultSetHandler como objeto BeanListHandler.
Step 3 - Passe resultSetHandler para o objeto QueryRunner e faça operações de banco de dados.
Exemplo
O exemplo a seguir demonstrará como ler uma lista de registros usando a classe BeanListHandler. Leremos os registros disponíveis na Tabela de funcionários e mapeá-los para a lista de beans de funcionários.
Sintaxe
List<Employee> empList = queryRunner.query(conn, "SELECT * FROM employees", resultHandler);
Onde,
resultHandler - Objeto BeanListHandler para mapear conjuntos de resultados para uma lista de objetos Employee.
queryRunner - Objeto QueryRunner para ler objetos de funcionários do banco de dados.
Para entender os conceitos mencionados acima relacionados aos DBUtils, vamos escrever um exemplo que irá executar uma consulta de leitura. Para escrever nosso exemplo, vamos criar um aplicativo de amostra.
Degrau | Descrição |
---|---|
1 | Atualize o arquivo MainApp.java criado no capítulo DBUtils - Primeiro Aplicativo . |
2 | Compile e execute o aplicativo conforme explicado a seguir. |
A seguir está o conteúdo do Employee.java.
public class Employee {
private int id;
private int age;
private String first;
private String last;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getFirst() {
return first;
}
public void setFirst(String first) {
this.first = first;
}
public String getLast() {
return last;
}
public void setLast(String last) {
this.last = last;
}
}
A seguir está o conteúdo do MainApp.java Arquivo.
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);
}
}
}
Quando terminar de criar os arquivos de origem, vamos executar o aplicativo. Se tudo estiver bem com o seu aplicativo, ele imprimirá a seguinte mensagem.
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
o org.apache.commons.dbutils.ArrayListHandleré a implementação da interface ResultSetHandler e é responsável por converter as linhas ResultSet em um objeto []. Esta classe é thread-safe.
Declaração de Classe
A seguir está a declaração para a classe org.apache.commons.dbutils.ArrayListHandler -
public class ArrayListHandler
extends AbstractListHandler<Object[]>
Uso
Step 1 - Crie um objeto de conexão.
Step 2 - Obtenha a implementação de ResultSetHandler como objeto ArrayListHandler.
Step 3 - Passe resultSetHandler para o objeto QueryRunner e faça operações de banco de dados.
Exemplo
O exemplo a seguir demonstrará como ler uma lista de registros usando a classe ArrayListHandler. Leremos os registros disponíveis na Tabela de funcionários como objeto [].
Sintaxe
List<Object> result = queryRunner.query(conn, "SELECT * FROM employees", new ArrayListHandler());
Onde,
resultHandler - Objeto ArrayListHandler para mapear conjuntos de resultados para a lista de objetos [].
queryRunner - Objeto QueryRunner para ler objetos de funcionários do banco de dados.
Para entender os conceitos mencionados acima relacionados aos DBUtils, vamos escrever um exemplo que irá executar uma consulta de leitura. Para escrever nosso exemplo, vamos criar um aplicativo de amostra.
Degrau | Descrição |
---|---|
1 | Atualize o arquivo MainApp.java criado no capítulo DBUtils - Primeiro Aplicativo . |
2 | Compile e execute o aplicativo conforme explicado a seguir. |
A seguir está o conteúdo do Employee.java.
public class Employee {
private int id;
private int age;
private String first;
private String last;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getFirst() {
return first;
}
public void setFirst(String first) {
this.first = first;
}
public String getLast() {
return last;
}
public void setLast(String last) {
this.last = last;
}
}
A seguir está o conteúdo do MainApp.java Arquivo.
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);
}
}
}
Quando terminar de criar os arquivos de origem, vamos executar o aplicativo. Se tudo estiver bem com o seu aplicativo, ele imprimirá a seguinte mensagem.
[100, 18, Zara, Ali]
[101, 25, Mahnaz, Fatma]
[102, 30, Zaid, Khan]
[103, 28, Sumit, Mittal]
o org.apache.commons.dbutils.MapListHandleré a implementação da interface ResultSetHandler e é responsável por converter as linhas ResultSet em lista de Mapas. Esta classe é thread-safe.
Declaração de Classe
A seguir está a declaração para a classe org.apache.commons.dbutils.MapListHandler -
public class MapListHandler
extends AbstractListHandler<Map<String,Object>>
Uso
Step 1 - Crie um objeto de conexão.
Step 2 - Obtenha a implementação de ResultSetHandler como objeto MapListHandler.
Step 3 - Passe resultSetHandler para o objeto QueryRunner e faça operações de banco de dados.
Exemplo
O exemplo a seguir demonstrará como ler uma lista de registros usando a classe MapListHandler. Leremos os registros disponíveis na Tabela de funcionários como uma lista de mapas.
Sintaxe
List<Map<String, Object>> result = queryRunner.query(conn, "SELECT * FROM employees", new MapListHandler());
Onde,
resultHandler - Objeto MapListHandler para mapear conjuntos de resultados para lista de mapas.
queryRunner - Objeto QueryRunner para ler objetos de funcionários do banco de dados.
Para entender os conceitos mencionados acima relacionados aos DBUtils, vamos escrever um exemplo que irá executar uma consulta de leitura. Para escrever nosso exemplo, vamos criar um aplicativo de amostra.
Degrau | Descrição |
---|---|
1 | Atualize o arquivo MainApp.java criado no capítulo DBUtils - Primeiro Aplicativo . |
2 | Compile e execute o aplicativo conforme explicado a seguir. |
A seguir está o conteúdo do Employee.java.
public class Employee {
private int id;
private int age;
private String first;
private String last;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getFirst() {
return first;
}
public void setFirst(String first) {
this.first = first;
}
public String getLast() {
return last;
}
public void setLast(String last) {
this.last = last;
}
}
A seguir está o conteúdo do MainApp.java Arquivo.
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);
}
}
}
Quando terminar de criar os arquivos de origem, vamos executar o aplicativo. Se tudo estiver bem com o seu aplicativo, ele imprimirá a seguinte mensagem.
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}]
Podemos criar nosso próprio manipulador personalizado implementando a interface ResultSetHandler ou estendendo qualquer implementação existente de ResultSetHandler. No exemplo fornecido a seguir, criamos um Handler personalizado, EmployeeHandler, estendendo a classe BeanHandler.
Para entender os conceitos mencionados acima relacionados aos DBUtils, vamos escrever um exemplo que irá executar uma consulta de leitura. Para escrever nosso exemplo, vamos criar um aplicativo de amostra.
Degrau | Descrição |
---|---|
1 | Atualize o arquivo MainApp.java criado no capítulo DBUtils - Primeiro Aplicativo . |
2 | Compile e execute o aplicativo conforme explicado a seguir. |
A seguir está o conteúdo do 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;
}
}
A seguir está o conteúdo do EmployeeHandler.java Arquivo.
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;
}
}
A seguir está o conteúdo do MainApp.java Arquivo.
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);
}
}
}
Quando terminar de criar os arquivos de origem, vamos executar o aplicativo. Se tudo estiver bem com o seu aplicativo, ele imprimirá a seguinte mensagem.
ID: 103, Age: 28, Name: Sumit, Mittal
No caso de nomes de colunas em uma tabela de banco de dados e nomes de objetos JavaBean equivalentes não serem semelhantes, podemos mapeá-los usando o objeto BasicRowProcessor personalizado. Veja o exemplo abaixo.
Para entender os conceitos mencionados acima relacionados aos DBUtils, vamos escrever um exemplo que irá executar uma consulta de leitura. Para escrever nosso exemplo, vamos criar um aplicativo de amostra.
Degrau | Descrição |
---|---|
1 | Atualize o arquivo MainApp.java criado no capítulo DBUtils - Primeiro Aplicativo . |
2 | Compile e execute o aplicativo conforme explicado a seguir. |
A seguir está o conteúdo do 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;
}
}
A seguir está o conteúdo do EmployeeHandler.java Arquivo.
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;
}
}
A seguir está o conteúdo do MainApp.java Arquivo.
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);
}
}
}
Quando terminar de criar os arquivos de origem, vamos executar o aplicativo. Se tudo estiver bem com o seu aplicativo, ele imprimirá a seguinte mensagem.
ID: 103, Age: 28, Name: Sumit, Mittal
Até agora, usamos objeto de conexão ao usar QueryRunner. Também podemos usar a fonte de dados sem problemas. O exemplo a seguir demonstrará como ler um registro usando a consulta Read com a ajuda de QueryRunner e datasource. Leremos um registro da Tabela de funcionários.
Sintaxe
QueryRunner queryRunner = new QueryRunner( dataSource );
Employee emp = queryRunner.query("SELECT * FROM employees WHERE first=?", resultHandler, "Sumit");
Onde,
dataSource - Objeto DataSource configurado.
resultHandler - Objeto ResultSetHandler para mapear o conjunto de resultados para o objeto Employee.
queryRunner - Objeto QueryRunner para ler objetos de funcionários do banco de dados.
Para entender os conceitos mencionados acima relacionados aos DBUtils, vamos escrever um exemplo que irá executar uma consulta de leitura. Para escrever nosso exemplo, vamos criar um aplicativo de amostra.
Degrau | Descrição |
---|---|
1 | Atualize o arquivo MainApp.java criado no capítulo DBUtils - Primeiro Aplicativo . |
2 | Compile e execute o aplicativo conforme explicado a seguir. |
A seguir está o conteúdo do Employee.java.
public class Employee {
private int id;
private int age;
private String first;
private String last;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getFirst() {
return first;
}
public void setFirst(String first) {
this.first = first;
}
public String getLast() {
return last;
}
public void setLast(String last) {
this.last = last;
}
}
A seguir está o conteúdo do CustomDatasource.java.
import javax.sql.DataSource;
import org.apache.commons.dbcp2.BasicDataSource;
public class CustomDataSource {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/emp";
// Database credentials
static final String USER = "root";
static final String PASS = "admin";
private static DataSource datasource;
private static final BasicDataSource basicDataSource;
static {
basicDataSource = new BasicDataSource();
basicDataSource.setDriverClassName(JDBC_DRIVER);
basicDataSource.setUsername(USER);
basicDataSource.setPassword(PASS);
basicDataSource.setUrl(DB_URL);
}
public static DataSource getInstance() {
return basicDataSource;
}
}
A seguir está o conteúdo do MainApp.java Arquivo.
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());
}
}
Quando terminar de criar os arquivos de origem, vamos executar o aplicativo. Se tudo estiver bem com o seu aplicativo, ele imprimirá a seguinte mensagem.
ID: 103, Age: 33, First: Sumit, Last: Mittal