Apache Commons DBUtils - Utilizzo di DataSource
Finora, abbiamo utilizzato l'oggetto di connessione durante l'utilizzo di QueryRunner. Possiamo anche usare l'origine dati in modo invisibile. L'esempio seguente dimostrerà come leggere un record utilizzando la query di lettura con l'aiuto di QueryRunner e dell'origine dati. Leggeremo un record dalla tabella dei dipendenti.
Sintassi
QueryRunner queryRunner = new QueryRunner( dataSource );
Employee emp = queryRunner.query("SELECT * FROM employees WHERE first=?", resultHandler, "Sumit");
Dove,
dataSource - Oggetto DataSource configurato.
resultHandler - Oggetto ResultSetHandler per mappare il set di risultati all'oggetto Employee.
queryRunner - Oggetto QueryRunner per leggere l'oggetto dipendente dal database.
Per comprendere i concetti sopra menzionati relativi a DBUtils, scriviamo un esempio che eseguirà una query di lettura. Per scrivere il nostro esempio, creiamo un'applicazione di esempio.
Passo | Descrizione |
---|---|
1 | Aggiorna il file MainApp.java creato nel capitolo DBUtils - Prima applicazione . |
2 | Compilare ed eseguire l'applicazione come spiegato di seguito. |
Di seguito è riportato il contenuto del file 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;
}
}
Di seguito è riportato il contenuto del file 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;
}
}
Di seguito è riportato il contenuto del file MainApp.java file.
import java.sql.SQLException;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.ResultSetHandler;
import org.apache.commons.dbutils.handlers.BeanHandler;
public class MainApp {
public static void main(String[] args) throws SQLException {
DbUtils.loadDriver(JDBC_DRIVER);
QueryRunner run = new QueryRunner(CustomDataSource.getInstance());
ResultSetHandler<Employee> resultHandler = new BeanHandler<Employee>(Employee.class);
Employee emp = queryRunner.query("SELECT * FROM employees WHERE id=?",
resultHandler, 103);
//Display values
System.out.print("ID: " + emp.getId());
System.out.print(", Age: " + emp.getAge());
System.out.print(", First: " + emp.getFirst());
System.out.println(", Last: " + emp.getLast());
}
}
Una volta che hai finito di creare i file sorgente, eseguiamo l'applicazione. Se tutto va bene con la tua applicazione, verrà stampato il seguente messaggio.
ID: 103, Age: 33, First: Sumit, Last: Mittal