詳解java調(diào)用存儲(chǔ)過(guò)程并封裝成map
詳解java調(diào)用存儲(chǔ)過(guò)程并封裝成map
本文代碼中注釋寫的比較清楚不在單獨(dú)說(shuō)明,希望能幫助到大家,
實(shí)例代碼:
public List<Map<String , Object>> doCallProcedure(String procedureString,String[] parameters)
throws PersistentDataOperationException {
if (!isReady ()) {
throw new PersistentDataOperationException( "DAO is not ready.");
}
ResultSet rs = null;
List<Map< String, Object>> list = new ArrayList<Map<String ,Object>>();
try {
Connection con=session.connection();
String procedure = "{call "+procedureString+ "(?,?,?) }"; //拼裝調(diào)用存儲(chǔ)過(guò)程字符串
CallableStatement cstmt = con.prepareCall (procedure ); //調(diào)用存儲(chǔ)過(guò)程
cstmt.setString (1,parameters [0 ]); //設(shè)置入?yún)?
cstmt.setInt (2, Integer. parseInt( parameters[ 1])) ;//設(shè)置入?yún)?
cstmt.registerOutParameter (3, oracle.jdbc.OracleTypes.CURSOR ); //設(shè)置出參
cstmt.execute (); //執(zhí)行提交
rs = (ResultSet ) cstmt.getObject (3 ); //獲取出參,3為參數(shù)順序數(shù)
ResultSetMetaData rsm =rs.getMetaData (); //獲得列集
Map< String, Object> map= null;
int col = rsm.getColumnCount (); //獲得列的個(gè)數(shù)
String colName [] = new String[ col] ;//列名集合
for (int i = 0; i < col; i++) {
colName [i ] = rsm.getColumnName (i+1 );
}
while( rs.next()){
//注意訪問(wèn)結(jié)果集是從索引位置1開(kāi)始的,而不是0
map = new HashMap< String, Object> ();
for (int j = 0; j < colName.length; j++) {
map.put (colName [j ], rs.getString (j+1 ));
}
list.add (map );
}
session.flush ();
} catch (HibernateException e) {
throw new PersistentDataOperationException( e) ;
} catch (SQLException e) {
e.printStackTrace ();
}
return list;
}
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- Java Spring動(dòng)態(tài)生成Mysql存儲(chǔ)過(guò)程詳解
- MyBatis創(chuàng)建存儲(chǔ)過(guò)程的實(shí)例代碼_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
- Java調(diào)用Oracle存儲(chǔ)過(guò)程詳解
- Java實(shí)現(xiàn)調(diào)用MySQL存儲(chǔ)過(guò)程詳解
- 詳解Java的JDBC API的存儲(chǔ)過(guò)程與SQL轉(zhuǎn)義語(yǔ)法的使用
- java編程調(diào)用存儲(chǔ)過(guò)程中得到新增記錄id號(hào)的實(shí)現(xiàn)方法
- Java調(diào)用MySQL存儲(chǔ)過(guò)程并獲得返回值的方法
- java調(diào)用mysql存儲(chǔ)過(guò)程實(shí)例分析
- Java中調(diào)用SQL Server存儲(chǔ)過(guò)程詳解
- java調(diào)用oracle分頁(yè)存儲(chǔ)過(guò)程示例
- java調(diào)用Oracle存儲(chǔ)過(guò)程的方法實(shí)例
- Java下使用Oracle存儲(chǔ)過(guò)程(詳解)
- Java存儲(chǔ)過(guò)程調(diào)用CallableStatement的方法
相關(guān)文章
SpringBoot如何實(shí)現(xiàn)Tomcat自動(dòng)配置
這篇文章主要介紹了SpringBoot如何實(shí)現(xiàn)Tomcat自動(dòng)配置,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot框架,感興趣的朋友可以了解下2021-03-03
Java數(shù)據(jù)結(jié)構(gòu)之單鏈表詳解
在之前的學(xué)習(xí)中,我們主要了解了很多 Java 的 基本語(yǔ)法,但是在之后的 Java學(xué)習(xí)中,了解基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)的知識(shí)非常重要,數(shù)據(jù)結(jié)構(gòu)的思想可以幫助我們更加清晰明白的了解 Java 的解題思路等等.今天我們就來(lái)開(kāi)始學(xué)習(xí)實(shí)現(xiàn)一個(gè)Java基礎(chǔ)的單鏈表,需要的朋友可以參考下2021-05-05
Java簡(jiǎn)單實(shí)現(xiàn)約瑟夫環(huán)算法示例
這篇文章主要介紹了Java簡(jiǎn)單實(shí)現(xiàn)約瑟夫環(huán)算法,簡(jiǎn)單描述了約瑟夫環(huán)問(wèn)題,并結(jié)合實(shí)例形式分析了Java實(shí)現(xiàn)約瑟夫環(huán)的具體操作技巧,需要的朋友可以參考下2017-09-09
Maven項(xiàng)目分析剔除無(wú)用jar引用的方法步驟
這篇文章主要介紹了Maven項(xiàng)目分析剔除無(wú)用jar引用的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
java使用POI實(shí)現(xiàn)html和word相互轉(zhuǎn)換
這篇文章主要為大家詳細(xì)介紹了java使用POI實(shí)現(xiàn)html和word的相互轉(zhuǎn)換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12
Java攔截器Interceptor實(shí)現(xiàn)原理及代碼示例
本文詳細(xì)講解了Java攔截器Interceptor實(shí)現(xiàn)原理及代碼示例,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12
利用MyBatis-Plus靈活處理JSON字段的技巧與最佳實(shí)踐
這篇文章主要給大家介紹了關(guān)于利用MyBatis-Plus靈活處理JSON字段的技巧與最佳實(shí)踐,Mybatis-Plus可以很方便地處理JSON字段,在實(shí)體類中可以使用@JSONField注解來(lái)標(biāo)記JSON字段,需要的朋友可以參考下2024-07-07
SpringBoot之bootstrap和application的區(qū)別解讀
這篇文章主要介紹了SpringBoot之bootstrap和application的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
mybatis報(bào)錯(cuò)元素內(nèi)容必須由格式正確的字符數(shù)據(jù)或標(biāo)記組成異常的解決辦法
今天小編就為大家分享一篇關(guān)于mybatis查詢出錯(cuò)解決辦法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12

