詳解java調(diào)用存儲過程并封裝成map
詳解java調(diào)用存儲過程并封裝成map
本文代碼中注釋寫的比較清楚不在單獨(dú)說明,希望能幫助到大家,
實(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)用存儲過程字符串
CallableStatement cstmt = con.prepareCall (procedure ); //調(diào)用存儲過程
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 (); //獲得列的個數(shù)
String colName [] = new String[ col] ;//列名集合
for (int i = 0; i < col; i++) {
colName [i ] = rsm.getColumnName (i+1 );
}
while( rs.next()){
//注意訪問結(jié)果集是從索引位置1開始的,而不是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;
}
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
- Java Spring動態(tài)生成Mysql存儲過程詳解
- MyBatis創(chuàng)建存儲過程的實(shí)例代碼_動力節(jié)點(diǎn)Java學(xué)院整理
- Java調(diào)用Oracle存儲過程詳解
- Java實(shí)現(xiàn)調(diào)用MySQL存儲過程詳解
- 詳解Java的JDBC API的存儲過程與SQL轉(zhuǎn)義語法的使用
- java編程調(diào)用存儲過程中得到新增記錄id號的實(shí)現(xiàn)方法
- Java調(diào)用MySQL存儲過程并獲得返回值的方法
- java調(diào)用mysql存儲過程實(shí)例分析
- Java中調(diào)用SQL Server存儲過程詳解
- java調(diào)用oracle分頁存儲過程示例
- java調(diào)用Oracle存儲過程的方法實(shí)例
- Java下使用Oracle存儲過程(詳解)
- Java存儲過程調(diào)用CallableStatement的方法
相關(guān)文章
Java?Valhalla?Project項(xiàng)目介紹
這篇文章主要介紹了Java?Valhalla?Project項(xiàng)目介紹,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09
SpringBoot實(shí)現(xiàn)識別圖片中的身份證號與營業(yè)執(zhí)照信息
這篇文章主要為大家詳細(xì)介紹了SpringBoot如何實(shí)現(xiàn)識別圖片中的身份證號與營業(yè)執(zhí)照信息,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2024-01-01
Spring事務(wù)管理只對出現(xiàn)運(yùn)行期異常進(jìn)行回滾
Spring的事務(wù)管理默認(rèn)只對出現(xiàn)運(yùn)行期異常(java.lang.RuntimeException及其子類)進(jìn)行回滾,需要了解更多Spring事務(wù)方面的知識,可詳看本文2012-11-11
SpringBoot+aop實(shí)現(xiàn)主從數(shù)據(jù)庫的讀寫分離操作
讀寫分離的作用是為了緩解寫庫,也就是主庫的壓力,但一定要基于數(shù)據(jù)一致性的原則,就是保證主從庫之間的數(shù)據(jù)一定要一致,這篇文章給大家介紹SpringBoot+aop實(shí)現(xiàn)主從數(shù)據(jù)庫的讀寫分離操作,感興趣的朋友跟隨小編一起看看吧2024-03-03
你必須得會的SpringBoot全局統(tǒng)一處理異常詳解
程序在運(yùn)行的過程中,不可避免會產(chǎn)生各種各樣的錯誤,這個時候就需要進(jìn)行異常處理,本文主要為大家介紹了SpringBoot實(shí)現(xiàn)全局統(tǒng)一處理異常的方法,需要的可以參考一下2023-06-06
springboot 自定義配置Boolean屬性不生效的解決
這篇文章主要介紹了springboot 自定義配置Boolean屬性不生效的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
簡單了解JAVA public class與class區(qū)別
這篇文章主要介紹了簡單了解JAVA public class與class區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
springAop實(shí)現(xiàn)權(quán)限管理數(shù)據(jù)校驗(yàn)操作日志的場景分析
這篇文章主要介紹了springAop實(shí)現(xiàn)權(quán)限管理數(shù)據(jù)校驗(yàn)操作日志的場景分析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03

