最近做一個(gè)基于J2EE的WEB項(xiàng)目,該項(xiàng)目的特點(diǎn)是查詢比較多,本來設(shè)計(jì)中打算用hibernate實(shí)現(xiàn)持久層,但是基于項(xiàng)目時(shí)間緊張和開發(fā)人員不熟悉hibernate而取消.于是想到了傳統(tǒng)的Dao,加上最近看了好多關(guān)于類反射的東西,于是自己寫了一個(gè)簡單的Dao,基本的方法很簡單,輸入sql語句/參數(shù)/,返回String二維數(shù)組(直接在頁面顯示).由于只是針對(duì)web顯示,所以在設(shè)計(jì)上加入了一些小技巧,例如數(shù)組的第一行是表頭信息,通過參數(shù)傳入,如果參數(shù)為null則根據(jù)dbms metadata來讀取,相關(guān)的api列表如下:
其中以Simple開頭的查詢方法只支持單條查詢并直接返回結(jié)果,其打開和關(guān)閉連接等過程在內(nèi)部自動(dòng)實(shí)現(xiàn).以exec開頭的的方法支持多條查詢和update,支持事務(wù),要自己打開(init)和關(guān)閉(close)連接,下面是一個(gè)stuts actionbean里面的代碼片斷,是不是看起來很簡單呢:)
? Dao d = new Dao();
??String[][] result = null;
??String sql="select name,phone from users where schoolID=? and classID=?"
??result=d.simplyQuery(sql,
????new String[]{"姓名","電話號(hào)碼"},? //表頭
????new String[]{theForm.getSchoolID(),theForm.getClassID}?? //參數(shù)
????);
??request.getSession().setAttribute("xxxx..",result);
Feedback
# re: 自己寫了一個(gè)簡單的Dao 回復(fù) 更多評(píng)論
2006-04-10 09:35 by 壯士的爛筆頭:)暈,改了幾次上面的圖片都無法按原來的大小顯示:(
# re: 自己寫了一個(gè)簡單的Dao 回復(fù) 更多評(píng)論
2006-04-10 09:50 by 劍事 request.getSession().setAttribute("xxxx..",result);
很錯(cuò)誤的用法
很錯(cuò)誤的用法
# re: 自己寫了一個(gè)簡單的Dao 回復(fù) 更多評(píng)論
2006-04-10 09:53 by 壯士的爛筆頭:)為什么呢?說來聽聽
# re: 自己寫了一個(gè)簡單的Dao 回復(fù) 更多評(píng)論
2006-04-10 10:23 by JustJava把result放到session中,什么時(shí)候關(guān)閉數(shù)據(jù)庫連接呢?
# re: 自己寫了一個(gè)簡單的Dao 回復(fù) 更多評(píng)論
2006-04-10 10:27 by 壯士的爛筆頭:)放到session之前就已經(jīng)關(guān)閉掉了
public String[][] simplyQuery(String sql,String[] titles,Object[] params)
{
try {
this.init();
return this.execSQL(sql,titles,params);
} catch (Exception e) {
// TODO Auto-generated catch block
logger.error(e.getMessage());
return null;
}
finally
{
this.close();
}
}
public String[][] simplyQuery(String sql,String[] titles,Object[] params)
{
try {
this.init();
return this.execSQL(sql,titles,params);
} catch (Exception e) {
// TODO Auto-generated catch block
logger.error(e.getMessage());
return null;
}
finally
{
this.close();
}
}
只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。 | ||
![]() |
||
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
|
||