一、DBUtils介紹 apache
上海網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián),上海網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為上海上1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的上海做網(wǎng)站的公司定做!
什么是DBUtils,它的作用
DBUtils是Java編程中的數(shù)據(jù)庫(kù)操作實(shí)用工具,小巧簡(jiǎn)單實(shí)用。
DBUtils封裝了對(duì)JDBC的操作,簡(jiǎn)化了JDBC操作,可以少寫代碼。
1.對(duì)于數(shù)據(jù)表的讀操作,他可以把結(jié)果轉(zhuǎn)換成List,Array,Set等Java集合,便于程序員操作
2.對(duì)于數(shù)據(jù)表的寫操作,也變得很簡(jiǎn)單(只需寫sql語句)
3.可以使用數(shù)據(jù)源,使用JNDI,數(shù)據(jù)庫(kù)連接池等技術(shù)來優(yōu)化性能–重用已經(jīng)構(gòu)建好的數(shù)據(jù)庫(kù)連接對(duì)象
二、DBUtils的三個(gè)核心對(duì)象
QueryRunner類
ResultSetHandler接口
DBUtils類
QueryRunner類
QueryRunner中提供對(duì)sql語句操作的API
它主要有三個(gè)方法
query() //用于執(zhí)行select
update() //用于執(zhí)行insert update delete
batch() //批處理
ResultSetHandler接口
用于定義select操作后,怎樣封裝結(jié)果集
DBUtils類
它就是一個(gè)工具類,定義了關(guān)閉資源與事務(wù)處理的方法
三、Dbutils快速入門
導(dǎo)入jar包
創(chuàng)建QueryRunner對(duì)象
使用query方法執(zhí)行select語句
使用ResultSetHandler封裝結(jié)果集
使用DBUtils類釋放資源
DBUtils快速入門實(shí)現(xiàn)步驟:
導(dǎo)入jar包
注意: c3p0與MySQL驅(qū)動(dòng)jar也要導(dǎo)入。
創(chuàng)建QueryRunner對(duì)象
使用query方法執(zhí)行select語句
使用ResultSetHandler封裝結(jié)果集
使用DBUtils類釋放資源
四、QueryRunner對(duì)象
構(gòu)造函數(shù):無錫人流多少錢 http://www.xaytsgyy.com/
new QueryRunner():它的事務(wù)可以手動(dòng)控制
也就是說此對(duì)象調(diào)用的方法(如:query、update、batrch)參數(shù)中要有Connection對(duì)象
new QueryRunner(DataSource ds):它的事務(wù)是自動(dòng)控制的 一個(gè)sql一個(gè)事務(wù)
此對(duì)象調(diào)用的方法(如:query、update、batrch)參數(shù)中無需Connection對(duì)象
進(jìn)行基本的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][]; //高維表示要執(zhí)行多少條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);
}
}
五、ResultSetHandler接口
ResultSetHandler下的所有結(jié)果處理器
ArrayHandler:適合取1條記錄。把該條記錄的每列值封裝到一個(gè)數(shù)組中Object[]
ArrayListHandler:適合取多條記錄。把每條記錄的每列值封裝到一個(gè)數(shù)組中Object[],把數(shù)組封裝到一個(gè)List中
ColumnListHandler:取某一列的數(shù)據(jù)。封裝到List中
KeyedHandler:取多條記錄,每一條記錄封裝到一個(gè)Map中,再把這個(gè)Map封裝到另外一個(gè)Map中,key為指定的字段值
MapHandler:適合取1條記錄。把當(dāng)前記錄的列名和列值放到一個(gè)Map中
MapListHandler:適合取多條記錄。把每條記錄封裝到一個(gè)Map中,再把Map封裝到List中
ScalarHandler:適合取單行單列數(shù)據(jù)
BeanHandler
BeanListHandler