详解java调用存储过程并封装成map

 更新时间:2017年09月05日 15:02:50   作者:wjch_111  
这篇文章主要介绍了详解java调用存储过程并封装成map的相关资料,希望通过本文能帮助到大家实现这样的功能,需要的朋友可以参考下

详解java调用存储过程并封装成map

           本文代码中注释写的比较清楚不在单独说明,希望能帮助到大家,

实例代码:

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+ "(?,?,?) }"; //拼装调用存储过程字符串 
                  CallableStatement cstmt = con.prepareCall (procedure ); //调用存储过程 
                  cstmt.setString (1,parameters [0 ]); //设置入参 
                  cstmt.setInt (2, Integer. parseInt( parameters[ 1])) ;//设置入参 
                  cstmt.registerOutParameter (3, oracle.jdbc.OracleTypes.CURSOR ); //设置出参 
                   
                  cstmt.execute (); //执行提交 
                  rs = (ResultSet ) cstmt.getObject (3 ); //获取出参,3为参数顺序数 
                  ResultSetMetaData rsm =rs.getMetaData (); //获得列集 
                  Map< String, Object> map= null; 
                   int col = rsm.getColumnCount ();  //获得列的个数 
                   String colName [] = new String[ col] ;//列名集合 
                   for (int i = 0; i < col; i++) { 
                        colName [i ] = rsm.getColumnName (i+1 ); 
                   } 
                   while( rs.next()){ 
                         //注意访问结果集是从索引位置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; 
       } 

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Java Valhalla Project项目介绍

    Java Valhalla Project项目介绍

    这篇文章主要介绍了Java Valhalla Project项目介绍,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • mybatis test标签如何判断值是否相等

    mybatis test标签如何判断值是否相等

    这篇文章主要介绍了mybatis test标签判断值是否相等的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • SpringBoot实现识别图片中的身份证号与营业执照信息

    SpringBoot实现识别图片中的身份证号与营业执照信息

    这篇文章主要为大家详细介绍了SpringBoot如何实现识别图片中的身份证号与营业执照信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2024-01-01
  • Spring事务管理只对出现运行期异常进行回滚

    Spring事务管理只对出现运行期异常进行回滚

    Spring的事务管理默认只对出现运行期异常(java.lang.RuntimeException及其子类)进行回滚,需要了解更多Spring事务方面的知识,可详看本文
    2012-11-11
  • SpringBoot+aop实现主从数据库的读写分离操作

    SpringBoot+aop实现主从数据库的读写分离操作

    读写分离的作用是为了缓解写库,也就是主库的压力,但一定要基于数据一致性的原则,就是保证主从库之间的数据一定要一致,这篇文章给大家介绍SpringBoot+aop实现主从数据库的读写分离操作,感兴趣的朋友跟随小编一起看看吧
    2024-03-03
  • 你必须得会的SpringBoot全局统一处理异常详解

    你必须得会的SpringBoot全局统一处理异常详解

    程序在运行的过程中,不可避免会产生各种各样的错误,这个时候就需要进行异常处理,本文主要为大家介绍了SpringBoot实现全局统一处理异常的方法,需要的可以参考一下
    2023-06-06
  • Java高级应用之斗地主游戏

    Java高级应用之斗地主游戏

    这篇文章主要为大家详细介绍了Java高级应用之斗地主游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • springboot 自定义配置Boolean属性不生效的解决

    springboot 自定义配置Boolean属性不生效的解决

    这篇文章主要介绍了springboot 自定义配置Boolean属性不生效的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • 简单了解JAVA public class与class区别

    简单了解JAVA public class与class区别

    这篇文章主要介绍了简单了解JAVA public class与class区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • springAop实现权限管理数据校验操作日志的场景分析

    springAop实现权限管理数据校验操作日志的场景分析

    这篇文章主要介绍了springAop实现权限管理数据校验操作日志的场景分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03

最新评论