概述
DBUtils是Java編程中的數據庫操作實用工具,小巧簡單實用。
DBUtils封裝了對JDBC的操作,簡化了JDBC操作,可以少寫代碼。
DBUtils三個核心功能介紹
- QueryRunner中提供對sql語句操作的API
- ResultSetHandler接口,用於定義select操作后,怎樣封裝結果集
- DBUtils類,它就是一個工具類,定義了關閉資源與事務處理的方法
QueryRunner核心類
- QueryRunner(DataSourcr ds),提供數據源(連接池),DbUtils底層自動維護連接connection
- update(String sql,Obj...params),執行更新數據
- query(String sql,ResultSetHandler<T>rsh,Object...panrams),執行查詢
ResultSetHandler結果集處理類
ArrayHandler:適合取1條記錄,把結果集中的第一行數據轉成對象數組。
ArrayListHandler:適合取多條記錄,把結果集中的每一行數據都轉成一個對象數組,再存放到List中。
BeanHandler:將結果集中的第一行數據封裝到一個對應的JavaBean實例中(把每條記錄封裝成對象,適合取一條記錄)
BeanListHandler:將結果集中的每一行數據都封裝到一個對應的JavaBean實例中,存放到List里。//重點
MapHandler:將結果集中的第一行數據封裝到一個Map里,key是列名,value就是對應的值。//重點
MapListHandler:將結果集中的每一行數據都封裝到一個Map里,然后再存放到List
ColumnListHandler:將結果集中某一列的數據存放到List中。
KeyedHandler(name):將結果集中的每一行數據都封裝到一個Map里(List<Map>),再把這些map再存到一個map里,其key為指定的列。
ScalarHandler:將結果集第一行的某一列放到某個對象中。//重點
package com.oterman.DButils; import java.sql.SQLException; import java.util.List; import java.util.Map; import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.ArrayHandler; import org.apache.commons.dbutils.handlers.ArrayListHandler; import org.apache.commons.dbutils.handlers.BeanHandler; import org.apache.commons.dbutils.handlers.BeanListHandler; import org.apache.commons.dbutils.handlers.MapHandler; import org.apache.commons.dbutils.handlers.MapListHandler; import org.apache.commons.dbutils.handlers.ScalarHandler; import org.junit.Test; import com.mchange.v2.c3p0.ComboPooledDataSource; /** * 該程序介紹ResultSetHandler的各個實現類; * @author 大蘑菇 * */ public class RSHandlerDemo { //--7.ScalarHandler:將查詢的結果的第一行的某一列放到一個對象中;精確定位到某個值; @Test public void query7() throws SQLException{ QueryRunner runner=new QueryRunner(new ComboPooledDataSource()); String name=(String)runner.query("select * from account",new ScalarHandler(2)); System.out.println(name); } //--6.MapListHandler:將查詢的結果的每一行存入到一個map中,鍵為列名,值為各列值;然后再將map存入list中; @Test public void query6() throws SQLException{ QueryRunner runner=new QueryRunner(new ComboPooledDataSource()); List<Map<String,Object>> map=runner.query("select * from account",new MapListHandler()); System.out.println(map); } //--5.MapHandler:將查詢的結果的第一行存入到一個map中,鍵為列名,值為各列值; @Test public void query5() throws SQLException{ QueryRunner runner=new QueryRunner(new ComboPooledDataSource()); Map<String,Object> map=runner.query("select * from account",new MapHandler()); System.out.println(map); } //--4.BeanListHandler:將查詢的結果的每一行封裝到一個javabean對象中,然后再將這些對象存入list中; @Test public void query4() throws SQLException{ QueryRunner runner=new QueryRunner(new ComboPooledDataSource()); List<Account> list=runner.query("select * from account",new BeanListHandler<Account>(Account.class)); System.out.println(list); } //--3.BeanHandler:將查詢的結果的第一行封裝到一份javabean對象中; @Test public void query3() throws SQLException{ QueryRunner runner=new QueryRunner(new ComboPooledDataSource()); Account account=runner.query("select * from account",new BeanHandler<Account>(Account.class)); System.out.println(account); } //--2.ArrayListHandler:將查詢的結果的每一行放到一個數組中,然后再將數組放到集合中; @Test public void query2() throws SQLException{ QueryRunner runner=new QueryRunner(new ComboPooledDataSource()); List<Object[]> list=runner.query("select * from account",new ArrayListHandler()); System.out.println(list); } //--1.ArrayHandler:將查詢的結果的第一行放到一個數組中 @Test public void query1() throws SQLException{ QueryRunner runner=new QueryRunner(new ComboPooledDataSource()); Object[] array=runner.query("select * from account",new ArrayHandler()); System.out.println(array); } }
2018-10-15