Apache-DBUtils包對數據庫的操作
?commons-dbutils 是 Apache 組織提供的一個開源 JDBC工具類庫,它是對JDBC的簡單封裝,學習成本極低,并且使用dbutils能極大簡化jdbc編碼的工作量,同時也不會影響程序的性能。
?API介紹:
–org.apache.commons.dbutils.QueryRunner
–org.apache.commons.dbutils.ResultSetHandler
–工具類
?org.apache.commons.dbutils.DbUtils。
QueryRunner類有兩類主要方法:
query() : 用于查詢數據
update() : 用于增刪改
ResultSetHandler接口用與將查詢到的數據按要求轉換為另一種格式。
?ArrayHandler:把結果集中的第一行數據轉成對象數組。
?ArrayListHandler:把結果集中的每一行數據都轉成一個數組,再存放到List中。
?BeanHandler:將結果集中的第一行數據封裝到一個對應的JavaBean實例中。
?BeanListHandler:將結果集中的每一行數據都封裝到一個對應的JavaBean實例中,存放到List里。
?ColumnListHandler:將結果集中某一列的數據存放到List中。
?KeyedHandler(name):將結果集中的每一行數據都封裝到一個Map里,再把這些map再存到一個map里,其key為指定的key。
?MapHandler:將結果集中的第一行數據封裝到一個Map里,key是列名,value就是對應的值。
?MapListHandler:將結果集中的每一行數據都封裝到一個Map里,然后再存放到List
-------------------------------------------------以下為具體的Demo--------------------------------------------------------------
/**
* 測試 QueryRunner 類的 update 方法
* 該方法可用于 INSERT, UPDATE 和 DELETE
*/
@Test
public void testQueryRunnerUpdate() {
//1. 創建 QueryRunner 的實現類
QueryRunner queryRunner = new QueryRunner();
String sql = "DELETE FROM customers " +
"WHERE id IN (?,?)";
Connection connection = null;
try {
connection = JDBCTools.getConnection();
//2. 使用其 update 方法
queryRunner.update(connection,
sql, 12, 13);
} catch (Exception e) {
e.printStackTrace();
} finally{
JDBCTools.releaseDB(null, null, connection);
}
}
BeanHandler:把結果集的第一條記錄轉為創建BeanHandler對象時傳入的Class參數對應的對象.
public void testBeanHandler() {
QueryRunner queryRunner = new QueryRunner();
Connection conn = null;
try {
conn = JDBCTools.getConnection();
String sql = "SELECT id, name customerName, email, birth "
+ "FROM customers WHERE id>=?";
Customer customer = queryRunner.query(conn, sql, new BeanHandler(
Customer.class), 5);
System.out.println(customer);
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCTools.releaseDB(null, null, conn);
}
}
BeanListHandler:把結果集轉為一個List,該List不為null,但可能為空集合(即size()方法返回0)
public void testBeanHandler() {
QueryRunner queryRunner = new QueryRunner();
Connection conn = null;
try {
conn = JDBCTools.getConnection();
String sql = "SELECT id, name customerName, email, birth "
+ "FROM customers WHERE id>=?";
Customer customer = queryRunner.query(conn, sql, new BeanHandler(
Customer.class), 5);
System.out.println(customer);
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCTools.releaseDB(null, null, conn);
}
}
public void testBeanListHandler(){
String sql = "SELECT id, name customerName, email, birth " +
"FROM customers";
QueryRunner queryRunner = new QueryRunner();
Connection conn = null;
try {
conn = JDBCTools.getConnection();
Object object = queryRunner.query(conn, sql,
new BeanListHandler<>(Customer.class));
System.out.println(object);
} catch (Exception e) {
e.printStackTrace();
} finally{
JDBCTools.releaseDB(null, null, conn);
}
}
MapHandler:返回SQL語句對應的第一條記錄對應的Map對象.鍵:SQL查詢的列名(不是列的別名),值:列的值.
public void testMapHandler(){
Connection connection = null;
QueryRunner queryRunner = new QueryRunner();
String sql = "SELECT id, name customerName, email, birth " +
"FROM customers WHERE id = ?";
try {
connection = JDBCTools.getConnection();
Map<String, Object> map = queryRunner.query(connection,
sql, new MapHandler(), 4);
System.out.println(map);
} catch (Exception e) {
e.printStackTrace();
} finally{
JDBCTools.releaseDB(null, null, connection);
}
}
MapLiatHandler:將結果轉化為一個Map的List. MapLiatHandler:返回的多條記錄對應的Map的集合.
public void testMapHandler(){
Connection connection = null;
QueryRunner queryRunner = new QueryRunner();
String sql = "SELECT id, name customerName, email, birth " +
"FROM customers WHERE id = ?";
try {
connection = JDBCTools.getConnection();
Map<String, Object> map = queryRunner.query(connection,
sql, new MapHandler(), 4);
System.out.println(map);
} catch (Exception e) {
e.printStackTrace();
} finally{
JDBCTools.releaseDB(null, null, connection);
}
}
public void testMapListHandler(){
Connection connection = null;
QueryRunner queryRunner = new QueryRunner();
String sql = "SELECT id, name, email, birth " +
"FROM customers";
try {
connection = JDBCTools.getConnection();
List<Map<String, Object>> mapList = queryRunner.query(connection,
sql, new MapListHandler());
System.out.println(mapList);
} catch (Exception e) {
e.printStackTrace();
} finally{
JDBCTools.releaseDB(null, null, connection);
}
}
public void testMapListHandler(){
Connection connection = null;
QueryRunner queryRunner = new QueryRunner();
String sql = "SELECT id, name, email, birth " +
"FROM customers";
try {
connection = JDBCTools.getConnection();
List<Map<String, Object>> mapList = queryRunner.query(connection,
sql, new MapListHandler());
System.out.println(mapList);
} catch (Exception e) {
e.printStackTrace();
} finally{
JDBCTools.releaseDB(null, null, connection);
}
}
ScalarHandler:把結果集轉為一個數值(可以是任意類型)返回
public void testScalarHandler(){
Connection connection = null;
QueryRunner queryRunner = new QueryRunner();
String sql = "SELECT name FROM customers " +
"WHERE id = ?";
try {
connection = JDBCTools.getConnection();
Object count = queryRunner.query(connection, sql,
new ScalarHandler(), 6);
System.out.println(count);
} catch (Exception e) {
e.printStackTrace();
} finally{
JDBCTools.releaseDB(null, null, connection);
}
}
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!