Common Dbutils 詳解
Common Dbutils是操作數據庫的組件,對傳統操作數據庫的類進行二次封裝,可以把結果集轉化成List。
DBUtils包括3個包:
org.apache.commons.dbutils
org.apache.commons.dbutils.handlers
org.apache.commons.dbutils.wrappers
DBUtils封裝了對JDBC的操作,簡化了JDBC操作,可以少寫代碼。
org.apache.commons.dbutils
DbUtils 關閉鏈接等操作
QueryRunner 進行查詢的操作
org.apache.commons.dbutils.handlers
ArrayHandler :將ResultSet中第一行的數據轉化成對象數組
ArrayListHandler將ResultSet中所有的數據轉化成List,List中存放的是 Object[]
BeanHandler :將ResultSet中第一行的數據轉化成類對象
BeanListHandler :將ResultSet中所有的數據轉化成List,List中存放的是類對象
ColumnListHandler :將ResultSet中某一列的數據存成List,List中存放的是 Object對象
KeyedHandler :將ResultSet中存成映射,key為某一列對應為Map。Map中存放的是數據
MapHandler :將ResultSet中第一行的數據存成Map映射
MapListHandler :將ResultSet中所有的數據存成List。List中存放的是Map
ScalarHandler :將ResultSet中一條記錄的其中某一列的數據存成Object
org.apache.commons.dbutils.wrappers
SqlNullCheckedResultSet :對ResultSet進行操作,改版里面的值
StringTrimmedResultSet :去除ResultSet中中字段的左右空格。Trim()
主要方法:
DbUtils類:啟動類
ResultSetHandler接口:轉換類型接口
MapListHandler類:實現類,把記錄轉化成List
BeanListHandler類:實現類,把記錄轉化成List,使記錄為JavaBean類型的對象
Qrery Runner類:執行SQL語句的類
建立三個Java文件
命名為BeanListExample.java
Guestbook.java
MapListExample.java
源碼:
BeanListExample.java
package com.sy;
import org.apache.commons.dbutils.DbUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;
public class BeanListExample {
public static void main(String[] args) {
Connection conn = null ;
String url = " jdbc:mysql://localhost:3306/people" ;
String jdbcDriver = " com.mysql.jdbc.Driver" ;
String user = " root " ;
String password = " hicc " ;
DbUtils.loadDriver(jdbcDriver);
try {
conn = DriverManager.getConnection(url, user, password);
QueryRunner qr = new QueryRunner();
List results = (List) qr.query(conn, " select id,name from guestbook" , new BeanListHandler(Guestbook.class ));
for ( int i = 0 ; i < results.size(); i++ ) {
Guestbook gb = (Guestbook) results.get(i);
System.out.println(" id: " + gb.getId() + " ,name: " + gb.getName());
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DbUtils.closeQuietly(conn);
}
}
} Guestbook.java
package com.sy;
public class Guestbook {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this .id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this .name = name;
}
}
MapListExample.java
package com.sy;
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.List;
import java.util.Map;
public class MapListExample {
public static void main(String[] args) {
Connection conn = null ;
String url = " jdbc:mysql://localhost:3306/people" ;
String jdbcDriver = " com.mysql.jdbc.Driver" ;
String user = " root " ;
String password = " hicc " ;
DbUtils.loadDriver(jdbcDriver);
try {
conn = DriverManager.getConnection(url, user, password);
QueryRunner qr = new QueryRunner();
List results = (List) qr.query(conn, " select id,name from guestmessage" , new MapListHandler());
for ( int i = 0 ; i < results.size(); i++ ) {
Map map = (Map) results.get(i);
System.out.println(" id: " + map.get( " id " ) + " ,name: " + map.get( " name " ));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DbUtils.closeQuietly(conn);
}
}
}
使用組建好需要添加commons - dbutils - 1.1 .jar和mysql - connector - java - 5.1 . 6 - bin.jar 兩個jar包。
配置完畢!!!
// 另一種方法
// 使用dbutils1.0版本
import java.util. * ;
import java.util.logging.* ;
import java.sql.* ;
import org.apache.commons.dbutils.* ;
import org.apache.commons.dbutils.handlers.* ;
public class TestDBUnits {
public static void main(String[]args) throws Exception {
TestDBUnits test = new TestDBUnits();
for ( int i = 0 ; i < 1 ; i ++ ) {
test.testQuery1();
test.testQuery2();
test.testUpdate();
}
}
public void testQuery1(){
try {
QueryRunner qr = new QueryRunner() ;
ResultSetHandler rsh = new ArrayListHandler();
String strsql = " select * from test1" ;
ArrayList result = (ArrayList)qr.query(getConnection() ,strsql ,rsh);
// System.out.print("");
} catch (Exception ex) {
ex.printStackTrace(System.out);
}
}
public void testQuery2(){
try {
QueryRunner qr = new QueryRunner() ;
ResultSetHandler rsh = new MapListHandler();
String strsql = " select * from test1" ;
ArrayList result = (ArrayList)qr.query(getConnection() ,strsql ,rsh);
for ( int i = 0 ; i < result.size() ; i++ ) {
Map map = (Map)result.get(i);
// System.out.println(map);
}
// System.out.print("");
} catch (Exception ex) {
ex.printStackTrace(System.out);
}
}
public void testUpdate(){
try {
QueryRunner qr = new QueryRunner() ;
ResultSetHandler rsh = new ArrayListHandler();
String strsql = " insert test1(page ,writable ,content)values('ttt','ttt','faskldfjklasdjklfjasdklj')" ;
qr.update(getConnection() ,strsql);
// System.out.print("");
} catch (Exception ex) {
ex.printStackTrace(System.out);
}
}
private Connection getConnection() throws InstantiationException,
IllegalAccessException, ClassNotFoundException, SQLException {
String strDriver = " org.gjt.mm.mysql.Driver" ;
String strUrl = " jdbc:mysql://localhost:3306/test" ;
String strUser = " root " ;
String strPass = "" ;
Class.forName(strDriver).newInstance();
return DriverManager.getConnection(strUrl, strUser, strPass);
}
}