如何使用DButils
一丶首先什么是DButils呢?
DButils是操作資料庫的組件,對傳統操作資料庫的類進行二次封裝,可以把結果集轉化成List,是java編程中的資料庫操作實用工具,小巧簡單實用,(PS:傳統操作資料庫的類指的是JDBC(java database connectivity)java資料庫連接,java的資料庫操作的基礎API,
二丶DButils類
為了實作一些提供給常規作業有用方法的類(關閉連接丶裝載JDBC驅動程式等),其里面的所有的方法都是靜態(static)的,
1. Close方法:DButils提供了三個多載的關閉方法,這些方法檢查所提供的引數是不是空NULL,if not NULL,它們就會關閉連接(Connection)丶宣告(Statement)或結果集(ResultSet)物件,
2. CloseQuietly方法:CloseQuietly方法不僅可以隱藏一些程式拋出的SQL Exception,還可以在連接(Connection)丶宣告(Statement)或結果集(ResultSet)為空(NULL)的情況下避免關閉,在多載CloseQuietly方法時,使用CloseQuietly(Connection *conn,Statement stmt,ResultSet rs),最后的塊就可以只需要呼叫這個方法即可,
3. commitAndCloseQuietly方法:用來提交連接然后關閉連接
4. commitAndClose方法:作用同3,和3不同的是其在關閉連接時向上拋出SQL例外,而3不會拋出SQL例外,
5.Load Driver(string drive Class Name):多載并注冊了JDBC驅動程式,如果成功回傳true,無需捕捉ClassNotFoundException例外,通過回傳值就可以判斷驅動程式是否加載成功,
三丶ResultSetHandler介面
此介面執行處理一個Java.SQL.ResultSet,將資料轉變并處理為任何一種形式,這樣又更加方便其應用,使用起來也更加簡單,
1.Array Handler:將ResultSet中第一行的資料轉化為物件陣列,
2.ArrayListHandler:將ResultSet中所有的資料轉化為List,List中存放的是Object[],
3.Bean Handler:將ResultSet中第一行的資料轉化為類物件,
4.BeanListHandler:將ResultSet中所有的資料轉化為List,List中存放的是類物件,
詳細用法如下:
import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.MapListHandler;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Map;
import java.util.List;
public class DbUtilsUseMapMySQL {
public static void main(String[] args) {
Connection conn = null;
String jdbcURL = "jdbc:mysql://Dell/Desktop/octopus";
String jdbcDriver = "com.mysql.jdbc.Driver";
String user = "root";
String password = "root";
try {
DbUtils.loadDriver(jdbcDriver);
conn = DriverManager.getConnection(jdbcURL, user, password);
QueryRunner qRunner = new QueryRunner();
List mapList = (List) qRunner.query(conn, "select id, name from animals_table",
new MapListHandler());
for (int i = 0; i < mapList.size(); i++) {
Map map = (Map) mapList.get(i);
System.out.println("id=" + map.get("id"));
System.out.println("name=" + map.get("name"));
System.out.println("—————–");
}
System.out.println("DbUtils_UseMap_MySQL: end.");
} catch (SQLException e) {
// handle the exception
e.printStackTrace();
} finally {
DbUtils.closeQuietly(conn);
}
}
}
class Employee {
private int id;
private String name;
public Employee() {
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return this.id;
}
public void print() {
System.out.println("id=" + id + " name=" + name);
}
}
5.此外還有ColumnListHandler(將ResultSet中某一列的資料存貯為List)Keyed Handler(將ResultSet中存成映射)Map Handler丶Map List Handler丶Scalar Handler等方法,
四丶Query Runner類
不僅簡化了SQL查詢操作,并且它與ResultSetHandler介面組合一起使用可以完成絕大多數的資料庫操作,大大減少了我們作為程式猿所需要寫的代碼量,
此類包含了QueryRunner()和Query Runner(DataSource ds)方法,
注:①query(Connection conn,String SQL,Object[]paramst)方法:可以執行一個帶參的選擇select,
例如:
String sql = "select * from users";
Object[] rs = runner.query(sql, new ArrayHandler());
// Print: ArrayHandler: [1, 測驗用戶1, test1, jiseflwes, 10, false]
System.out.println("ArrayHandler: " + Arrays.toString(rs));
②update(Connection conn,String SQL,Object[]paramst)方法:執行一個帶參的insert,update,delete/alter 操作,
③update(String SQL,Object[]paramst)方法:與②不同的是其是從DATa Source/Set DATa Source方法中重新獲得的,
五丶使用DButils的基本步驟
1.匯入DbUtils使用的jar包
2.新建DbUtilsTest.java單元測驗類
3.查看現有資料庫資料
4.輸入所需操作的代碼
5.查看執行后的資料庫結果
6.接下來測驗插入方法,插入一條新資料
7.查看資料庫執行結果
8.測驗更新,更新剛插入的資料
以上適用于更新插入洗掉操作,
六丶DBUtils設計原則
①小 - DBUtils庫的大小非常小,類較少,因此易于理解和使用,
②透明 - DBUtils庫在幕后作業量不大, 它只需要查詢和執行,
③快速 - DBUtils庫類不會創建許多后臺物件,并且在資料庫操作執行方面非常快,
七丶如何配置DBUtils?
1.配置Java
①JAVA_HOME -此環境變數應該指向你安裝JDK的目錄,例如C:\ Program Files\ Java \ JDK1.5.0,
②CLASSPATH - 此環境變數應設定適當的路徑,例如C:\ Program Files \ Java \ jdk1.5.0_20 \ jre \ lib,
③PATH - 此環境變數應指向適當的JRE bin,例如C:\ Program Files \ Java \ jre1.5.0_20 \ bin,
(如之前已經配置完成則只需檢查一下是否還能夠正常使用即可)
2.安裝資料庫
安裝適合自己的系統的資料庫,一般方便學習的話,可以使用MySql,基于自己計算機的作業系統選擇32bit或64bit從官網下載安裝即可,
3.安裝Database Drivers
最新的JDK包括JDBC-ODBC Bridge驅動程式,它使大多數開放式資料庫連接(ODBC)驅動程式可供使用JDBC API的程式員使用,
4.從官網下載Commons DBUtils Archive
5.配置Apache Common DBUtils環境
設定環境變數 APACHE_HOME 到 C:\Apache
6.配置CLASSPATH變數
設定環境變數 CLASSPATHto%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;
八丶常見問題
1.QueryRunner 下的方法不是每個方法都設成關閉連接的
2. Dbutils 在做表到物件的映射時要求列名和物件的屬性名必須一致
3.必須滿足JavaBean的規范,其次Bean的getter與setter方法的名字與結果集的列名一一對應,而不要求JavaBean的私有成員與表結果集列名一一對應,
4.DBUtils執行insert插入操作的時候,無法回傳自增主鍵,
5.能使用包裝型別就不要使用基本型別(why?實際上就是為了保證在查詢結果為null的時候,不會因為給基本型別賦空值而發生錯誤)
int a1 = (Integer) null;
boolean x1 = (Boolean)null;//錯誤
Integer a2 = (Integer) null;
Boolean x2 = (Boolean)null;//正確
6.DBUtils可以將結果集封裝為各種型別,主要有:Bean/List,Map/List
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/164207.html
標籤:其他
