`

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开发中一个常见的需求,通过本文,我们将详细介绍如何使用Java调用存储过程并将结果封装成Map对象,以便于后续的数据处理。 一、为什么需要调用存储过程 在实际开发中,我们经常...

    JAVA调用ORACLE存储过程通用类

    ### JAVA调用ORACLE存储过程通用类 #### 概述 在Java开发中,经常会遇到需要与数据库交互的情况,特别是当涉及到复杂的业务逻辑时,利用数据库的存储过程可以有效地提高程序性能并简化代码结构。本篇文章将详细...

    Spring JdbcTemplate调用Oracle存储过程实现CRUD

    对于 `P_EMP_SELECT` 存储过程,我们使用 `CallableStatementCallback` 对象调用存储过程,并将结果集处理到 `List` 集合中。 对于 `P_EMP_ADD` 存储过程,我们使用 `CallableStatementCallback` 对象调用存储过程...

    Ibatis调用存储过程调用存储过程

    本文将围绕“Ibatis调用存储过程”这一主题展开讨论,旨在帮助读者理解并掌握在Ibatis中调用存储过程的方法。 #### 二、存储过程与Ibatis简介 ##### 2.1 存储过程简介 存储过程是一种在数据库中预先编译好的SQL...

    mybatis调用存储过程

    MyBatis作为一款流行的Java持久层框架,它提供了调用存储过程的功能,使得开发者能够方便地在Java应用中利用数据库的存储过程。下面将详细介绍如何在MyBatis中调用存储过程以及相关的知识点。 1. MyBatis概述 ...

    MyBatis调用存储过程

    MyBatis作为一款流行的Java持久层框架,提供了调用存储过程的功能。下面将详细介绍如何在MyBatis中配置和使用存储过程。 ### 1. 配置MyBatis XML映射文件 在MyBatis的映射文件(mapper.xml)中,我们需要为存储...

    java一键xml转map,一键map转xml工具类

    本文将详细讲解如何使用Java实现XML到Map以及Map到XML的一键转换,并介绍一个已封装好的工具类`EasyXmlUtil`。 首先,XML到Map的转换涉及到XML的解析。在Java中,我们可以使用`javax.xml.parsers....

    封装调用储存过程架包

    本项目名为“封装调用储存过程架包”,其核心功能在于提供一个直接通过Java代码调用jar包内部方法的方式来执行数据库的储存过程,并将所有的OUT参数以Map的形式返回,大大简化了开发流程。 首先,我们来理解一下...

    Java xml转化为map

    总的来说,Java中将XML转换为Map的过程涉及XML的解析、数据结构的映射以及转换策略的选择。根据实际需求,可以选择合适的工具和方法来实现这一目标。在实际项目中,为了提高可维护性和灵活性,通常建议封装这个过程...

    oracl存储过程以及mybatis的调用

    映射器XML文件中的`&lt;insert&gt;`标签使用`statementType="CALLABLE"`指示这是一个调用存储过程的语句。然后,我们使用`{call ...}`语法来定义存储过程的调用,其中每个参数都以`#{}`包裹,`jdbcType`指定了JDBC的类型,...

    JAVA通过网络调用网络打印机的工具类

    通过对打印任务的封装和对不同打印场景的支持,该工具类极大地简化了开发过程,并为企业提供了强大的打印解决方案。开发者可以根据具体需求进一步扩展该工具类的功能,例如增加更多的快递公司模板支持、优化异常处理...

    ibatis调用oracle的函数,存储过程的方法

    调用存储过程: ```java Map, Object&gt; params = new HashMap(); params.put("id", id); sqlSession.execute("updateEmployeeStatus", params); String status = (String) params.get("status"); ``` 5. **...

    java bean和map之间的互转

    Java Bean是一种符合特定规范的类,通常用于封装业务数据,而Map则是一种键值对的集合,便于灵活地存储和查找数据。在实际开发中,我们常常需要将Java Bean对象与Map对象之间进行转换,以便于数据的处理和传输。以下...

    java应用中如何捕抓SAS存储过程输出的流信息

    3. **从Java调用SAS存储过程**: - 使用SAS Integration Technologies (IT) APIs,尤其是Integrated Object Model (IOM),与SAS服务器进行通信。 - 首先,建立一个到SAS Workspace Server的连接,获取`...

    Ibatis调用Oracle存储过程返回自定义类型

    在Java代码中,我们首先准备输入参数并设置输出参数类型,然后调用存储过程并处理返回结果。 ### 总结 通过上述步骤,我们可以看到使用Ibatis框架调用Oracle存储过程并返回自定义类型的过程。这种方法不仅能够提高...

    java学生管理系统map

    例如,用户可以输入"添加学生",然后输入学生的ID、姓名和其他信息,系统将这些信息封装成Student对象,并调用`addStudent()`方法插入Map。 总结起来,这个"java学生管理系统map"项目运用了Java集合框架中的Map接口...

    读取properties返回map并写入文件

    总结来说,读取.properties文件并将其内容转化为Map对象,以及将Map对象写回文件的过程,是Java开发中的常见操作。这使得我们可以方便地管理配置信息,并允许在不同环境间灵活切换配置。在实际项目中,可以进一步...

    MAP<---&gt;XML格式互相转换接口,已封装,可直接使用(java版)

    在Java开发中,数据结构的转换是常见的任务之一,例如将Map对象转换为XML格式的字符串,或者将XML数据解析成Map对象。标题提到的"MAP&lt;---&gt;XML格式互相转换接口,已封装,可直接使用(java版)"正是这样一个工具,它...

    Java笔记Map,九大内置对象

    关于Java调用存储过程,通常是在数据库操作中进行的。存储过程是预先在数据库中编译好的SQL语句集合,通过Java的JDBC(Java Database Connectivity)API可以调用这些存储过程。以下是一个基本示例,假设有一个名为`...

Global site tag (gtag.js) - Google Analytics