`

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调用存储过程并封装成map

    主要介绍了详解java调用存储过程并封装成map的相关资料,希望通过本文能帮助到大家实现这样的功能,需要的朋友可以参考下

    Java_JDBC由浅入深

    9.2 有参无返回值存储过程调用 63 9.3 有参有返回值存储过程调用 64 9.4 JDBC其他API 65 第十一节 元数据信息 66 11.1 数据库元数据信息 66 11.2 参数元数据信息 67 第十二节 批处理的使用 67 12.1 普通方式插入一千...

    Java JDK 7学习笔记(国内第一本Java 7,前期版本累计销量5万册)

    并详细介绍了jvm、jre、java se api、jdk与ide之间的对照关系。必要时从java se api的源代码分析,了解各种语法在java se api中如何应用。对于建议练习的范例提供lab文档,以突出练习重点。此外,本书还将ide操作纳...

    java 面试题 总结

    面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多...

    JAVA面试题最全集

    给定一个C语言函数,要求实现在java类中进行调用。 45.如何获得数组的长度? 46.访问修饰符“public/private/protected/缺省的修饰符”的使用 47.用关键字final修饰一个类或者方法时,有何意义? 48.掌握类和...

    疯狂JAVA讲义

    学生提问:为什么我创建Java对象时从未感觉到java.lang.Object的构造器被调用过? 150 5.7 多态 151 5.7.1 多态性 151 5.7.2 引用变量的强制类型转换 152 5.7.3 instanceof运算符 154 5.8 继承与组合 154 ...

    java初学者必看

    最近正在学习Java,也买了很多的有关Java方面的书籍,其中发现《跟我学Java》这本书,都的很不错啊,所以顺便拿电脑把这本书的目录敲了下来,与大家分享。尤其是那些和我一样初学Java的朋友们,看看哪一节对你有用,...

    Android集成主流优秀第三方组件框架

    数据操作工具类(ToolData.java),自动递归获取表单数据封装成Map、本地数据分页共通方 法等 图片操作工具类(ToolPicture.java),生成二维码、验证码、灰度、合成、圆角、水印等操 作 读取本地资源工具类...

    Java JDK实例宝典

    11 调用存储过程 14. 12 一个数据库连接池 第15章 Applet 15. 1 Applet时钟 15. 2 处理鼠标和键盘事件 15. 3 英文打字游戏 15. 4 Applet间通信 15. 5 汉诺塔游戏 第16章 J2SE 5. 0...

    超级有影响力霸气的Java面试题大全文档

    面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性:  多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化...

    关于JAVA面试的100题及其答案

    面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 (2).继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种...

    java面试题

    使用存储过程比单纯的SQL语句要快,可以用一个命令对象来调用存储过程。 索引优缺点? 答:索引可以提高对数据库中数据的检索,缺点是减慢了数据录入速度,同时也增加了数据库的尺寸大小。 什么是事务?什么是事锁? ...

    集成目前Android主流优秀第三方组件

    数据操作工具类(ToolData.java),自动递归获取表单数据封装成Map、本地数据分页共通方法等 图片操作工具类(ToolPicture.java),生成二维码、验证码、灰度、合成、圆角、水印等操作 读取本地资源工具类...

    Android例子源码集成安卓主流优秀第三方组件框架.zip

    数据操作工具类(ToolData.java),自动递归获取表单数据封装成Map、本地数据分页共通方法等 图片操作工具类(ToolPicture.java),生成二维码、验证码、灰度、合成、圆角、水印等操作 读取本地资源工具类...

    集成安卓主流优秀第三方组件框架.zip

    数据操作工具类(ToolData.java),自动递归获取表单数据封装成Map、本地数据分页共通方法等 图片操作工具类(ToolPicture.java),生成二维码、验证码、灰度、合成、圆角、水印等操作 读取本地资源工具类...

    java范例开发大全源代码

    第1篇 Java编程基础  第1章 Java开发环境的搭建(教学视频:9分钟) 2  1.1 理解Java 2  1.2 搭建Java所需环境 3  1.2.1 下载JDK 3  1.2.2 安装JDK 4  1.2.3 配置环境 5  1.2.4 测试JDK配置...

    java范例开发大全

    第1篇 Java编程基础 第1章 Java开发环境的搭建(教学视频:9分钟) 2 1.1 理解Java 2 1.2 搭建Java所需环境 3 1.2.1 下载JDK 3 1.2.2 安装JDK 4 1.2.3 配置环境 5 1.2.4 测试JDK配置是否成功 7 实例1 开发第一个Java...

    Java范例开发大全 (源程序)

    第1篇 Java编程基础  第1章 Java开发环境的搭建(教学视频:9分钟) 2  1.1 理解Java 2  1.2 搭建Java所需环境 3  1.2.1 下载JDK 3  1.2.2 安装JDK 4  1.2.3 配置环境 5  1.2.4 测试JDK配置是否成功 7...

    达内 coreJava 习题答案

    import java.util.Scanner; class Bissextile{ public static void main(String[] arge){ System.out.print("请输入年份"); int year; //定义输入的年份名字为“year” Scanner scanner = new Scanner(System.in...

    SpringBoot笔记-下篇.pdf

    • Cache是一个类似Map的数据结构并临时存储以Key为索引的值。一个 Cache仅被一个 CacheManager所拥有。 • Entry是一个存储在Cache中的key-value对。 • Expiry 每一 个存储在Cache中的条目有一个定义的有效期。...

Global site tag (gtag.js) - Google Analytics