1、DBUtils介紹 apachemysql
什麼是DBUtils,它的做用程序員
DBUtils是Java編程中的數據庫操做實用工具,小巧簡單實用。sql
DBUtils封裝了對JDBC的操做,簡化了JDBC操做,能夠少寫代碼。數據庫
1.對於數據表的讀操做,他能夠把結果轉換成List,Array,Set等Java集合,便於程序員操做apache
2.對於數據表的寫操做,也變得很簡單(只需寫sql語句)編程
3.能夠使用數據源,使用JNDI,數據庫鏈接池等技術來優化性能–重用已經構建好的數據庫鏈接對象數組
2、DBUtils的三個核心對象ide
QueryRunner類函數
ResultSetHandler接口工具
DBUtils類
QueryRunner類
QueryRunner中提供對sql語句操做的API
它主要有三個方法
query() //用於執行select
update() //用於執行insert update delete
batch() //批處理
ResultSetHandler接口
用於定義select操做後,怎樣封裝結果集
DBUtils類
它就是一個工具類,定義了關閉資源與事務處理的方法
3、Dbutils快速入門
導入jar包
建立QueryRunner對象
使用query方法執行select語句
使用ResultSetHandler封裝結果集
使用DBUtils類釋放資源
DBUtils快速入門實現步驟:
導入jar包
注意: c3p0與mysql驅動jar也要導入。
建立QueryRunner對象
使用query方法執行select語句
使用ResultSetHandler封裝結果集
使用DBUtils類釋放資源
4、QueryRunner對象
構造函數:無錫人流多少錢 http://www.xaytsgyy.com/
new QueryRunner():它的事務能夠手動控制
也就是說此對象調用的方法(如:query、update、batrch)參數中要有Connection對象
new QueryRunner(DataSource ds):它的事務是自動控制的 一個sql一個事務
此對象調用的方法(如:query、update、batrch)參數中無需Connection對象
進行基本的CRUD操做:練一下
public class TestQueryRunner{
@Test
public void testInsert() throws SQLException{
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
qr.update("insert into student(NAME, birthday) values(?,?)", "bbb", new Date());
}
@Test
public void testUpdate() throws SQLException{
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
qr.update("update student set name=?, birthday=? where id=?", "ccc", new Date(), 1);
}
@Test
public void testDelete() throws SQLException{
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
qr.update("delete from student where id=?", 1);
}
@Test
public void testBatch() throws SQLException{
QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
Object[][] params = new Object[10][]; //高維表示要執行多少條sql語句
for(int i = 0; i < params.length; i++){
params[i] = new Object[]{"菜10"+i, "123", "c10@163.com", new Date()};
}
qr.batch("insert into user(username, password, email, birthday) values(?,?,?,?)", params);
}
}
5、ResultSetHandler接口
ResultSetHandler下的全部結果處理器
ArrayHandler:適合取1條記錄。把該條記錄的每列值封裝到一個數組中Object[]
ArrayListHandler:適合取多條記錄。把每條記錄的每列值封裝到一個數組中Object[],把數組封裝到一個List中
ColumnListHandler:取某一列的數據。封裝到List中
KeyedHandler:取多條記錄,每一條記錄封裝到一個Map中,再把這個Map封裝到另一個Map中,key爲指定的字段值
MapHandler:適合取1條記錄。把當前記錄的列名和列值放到一個Map中
MapListHandler:適合取多條記錄。把每條記錄封裝到一個Map中,再把Map封裝到List中
ScalarHandler:適合取單行單列數據
BeanHandler
BeanListHandler