最近使用了新的struts2.20+spring4.0+hibernate4.0,新框架移除了hibernatesupportdao,所以重寫了下hibernate4對sql和儲存過程的操作,以備後查
以下的sessionfactory 物件是通過spring注入
1private
sessionfactory sessionfactory;
2public
void
setsessionfactory(sessionfactory sessionfactory)
1、通過sql查詢,以list的方式返回
1/**2
* 通過sql查詢,結果集不作處理直接返回3*
@param
querystring 查詢字串4*
@param
params 引數5*
@return6*/
7 @suppresswarnings("unchecked")
8public listfind_sql(string querystring,object params)15}
16 listlist =query.list();
17return
list;
18 }
2、sql或儲存過程查詢,將返回的結果集轉換成map,結果集列名作為鍵
1/**2
* 通過sql查詢,將結果集轉換成map物件,列名作為鍵(適用於有返回結果集的儲存過程或查詢語句)3*
@param
querystring4*
@param
params5*
@return6*/
7 @suppresswarnings("unchecked")
8public list>find_sql_tomap(string querystring,object params)16}
17 list> list =query.list();
18return
list;
19 }
3、sql執行增、刪、改操作,測試使用該方法執行儲存過程會報錯
1/**2
* 通過sql執行無返回結果的語句,執行修改、刪除、新增等(適用於無結果集返回sql語句,不能用於儲存過程)3*
@param
querystring4*
@param
params5*/
6public
void
executesql(string querystring,object params)13}
14query.executeupdate();
15 }
4、執行無結果集返回的儲存過程,是第3點的補充
1/**2
* 通過sql執行無返回結果的儲存過程(僅限於儲存過程)3*
@param
querystring4*
@param
params5*/
6public
void executevoidproceduresql(final string querystring,final object params) throws
exception");
12if (null !=params) 16}
17 rs =call.executequery();
18call.close();
19rs.close();20}
21});
22 }
5、通過儲存過程查詢,返回的結果集必須為單結果集,與第2點方法效果一致
1/**2
* 通過儲存過程查詢(單結果集)3*
@param
sql 查詢sql4*
@param
params 引數5*
@param
columnnum 返回的列數6*
@return7*/
8public list> find_procedure(final string sql,final
object params)
20 rs =cs.executequery();
21 resultsetmetadata metadata =rs.getmetadata();
22int colcount=metadata.getcolumncount();
23while
(rs.next())
29result.add(map);30}
31close( cs, rs);32}
33});
34return
result;
35 } catch
(exception e)
38return
null
;39 }
6、通過儲存過程查詢,適用返回的結果集有乙個或多個
1/**2
* 通過儲存過程查詢(多結果集)3*
@param
sql 查詢sql4*
@param
params 引數5*
@param
columnnum 返回的列數6*
@return7*/
8public list>> find_procedure_multi(final string sql,final
object params)
21boolean hadresults =cs.execute();
22 resultsetmetadata metadata = null;23
while(hadresults)
34rslist.add(map);35}
36result.add(rslist);
37 close(null, rs);//
遍歷完乙個結果集,將其關閉
38 hadresults=cs.getmoreresults();//
移到下乙個結果集39}
40close(cs, rs);41}
42});
43return
result;
44 } catch
(exception e)
47return
null
;48 }
**中的close方法,執行dowork的execute方法中不能關閉connection,connection連同session由spring管理
1private
void
close(callablestatement cs,resultset rs)
6if(rs!=null
)9 } catch
(exception e)
12 }
hibernate4使用本地sql查詢和刪除
public listlistall mapmap,int pn,int pagesize throws exception if global.isempty map.get mmssubject if global.isempty map.get startmmsdate if global.i...
HIBERNATE4原始碼編譯
git gradlew.bat assemble 可跳過測試,否則執行gradlew.bat build的過程中,遇到test出錯會報錯退出 本以為會順利結束,沒想到又報錯了。是符號無法識別轉換的錯誤。在網上搜尋了一番,這個跟系統的區域設定有關。需要改為 英語 英國 我試了英語 美國 居然還是報錯。...
osgi 環境下 hibernate 4 配置
準備將公司的老應用遷移到osgi karaf平台上。很 的一點就是hibernate。這玩意,真是超級麻煩的乙個工程。classload是最頭痛的乙個問題。在hibernate4上利用註冊服務的方式 實現了 classloader的 順便提一句想用hibernate3做reloadclass的同學們...