`
beming
  • 浏览: 30190 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

hibernate调用存储过程,带out输出参数

阅读更多
public Long callProc(final String proc,final List<Object> paramList,final int outIndex, final int type) {
		return (Long) getHibernateTemplate().execute(new HibernateCallback<Object>() {
			public Object doInHibernate(org.hibernate.Session session) throws org.hibernate.HibernateException {
	Long result = null;
                Connection conn = null;
                CallableStatement cstmt = null;
                try {
                    conn = session.connection();
                    conn.setAutoCommit(false);
                    cstmt = conn.prepareCall(proc);
                    for (int i=0; paramList != null && i<paramList.size(); i++) {
                    	if(i+1 == outIndex) {
                    		cstmt.setInt(i+1,(Integer.parseInt(paramList.get(i).toString())));
                    	} else {
                    		cstmt.setString(i+1, paramList.get(i).toString());
                    	}
                    }
                    cstmt.registerOutParameter(outIndex,type);
                    cstmt.execute();
                    result = new Long(cstmt.getInt(outIndex));
                    conn.commit();
                } catch (Exception ex) {
                    try {
                        conn.rollback();
                    } catch (SQLException e1) {
                        logger.error(e1);
                        e1.printStackTrace();
                    }
                    ex.printStackTrace();
                } finally {
                    if(cstmt != null) {
                    	try {
                    		cstmt.close();
                    	}catch(Exception ex) {}
                    }
                }
                return result;
			}
		});
	}


必须要用connection,当前代码还没有该用factory来获取connect,而使用已经过期的session.connect()方法。
看介绍在hibernate4.x之后该方法将会被去掉。
分享到:
评论

相关推荐

    java-hibernate调用mysql过程和函数的方式知识.pdf

    在 Java 中,我们需要使用 `registerOutParameter()` 方法来注册输出参数,然后使用 `execute()` 方法来执行存储过程,并使用 `getString()` 方法来获取输出参数的值。 示例代码 下面是一个简单的示例代码,演示...

    Hibernate3调用存储过程用法

    二、Hibernate3调用存储过程的原理 Hibernate3通过Query对象的createSQLQuery方法提供对存储过程的调用支持。它允许我们编写原生的SQL语句,包括调用存储过程,然后映射结果到Java对象。 三、具体步骤 1. **创建SQL...

    Hibernate存储过程的调用

    #### 三、Hibernate调用存储过程的方法 在Hibernate中调用存储过程通常有两种方式:通过`Query`接口或使用`StoredProcedureQuery`。这里我们主要介绍使用`StoredProcedureQuery`的方式,因为这种方式更适合处理复杂...

    java-hibernate调用mysql过程和函数的方式.pdf

    以下是Java-Hibernate调用MySQL过程和函数的详细步骤: 1. **调用函数** - 函数调用通常涉及到返回值和可能的输入参数。例如,调用名为`get_pname`的函数,该函数可能接受三个参数。使用`CallableStatement`创建一...

    java-hibernate调用mysql过程和函数的方式[归类].pdf

    下面将详细介绍如何在Java中利用Hibernate调用MySQL的存储过程和函数。 首先,我们需要理解CallableStatement接口,它是PreparedStatement的子接口,用于执行SQL存储过程。在Java中,我们通常使用CallableStatement...

    jdbc调用存储过程,函数,游标

    本篇文章将详细讲解如何利用JDBC调用存储过程、函数以及处理游标。 首先,存储过程是数据库中预编译的一组SQL语句,它允许我们封装复杂的业务逻辑,提高执行效率,减少网络传输的数据量。在JDBC中调用存储过程通常...

    存储过程学习经典[语法+实例+调用]

    - **OUT**:表示输出参数,存储过程执行完成后将值返回给调用者。 - **INOUT**:表示既可以作为输入也可以作为输出的参数。 ##### 2. 实例 考虑以下示例,用于更新账户余额: ```sql CREATE OR REPLACE PROCEDURE ...

    JAVA调用存储过程

    综上所述,Java调用存储过程涉及到JDBC API的使用,包括建立连接、创建CallableStatement、设置和获取参数、执行存储过程以及关闭资源。熟练掌握这些步骤对于进行数据库交互的Java开发至关重要。

    oracle存储过程学习经典[语法+实例+调用].doc

    - **用Java调用Oracle存储过程**:使用`CallableStatement`接口来调用存储过程,设置输入参数,执行存储过程并获取输出结果。 #### 动态查询在存储过程中的应用 - **本地动态SQL**:在存储过程中构建动态SQL语句,...

    struts2 存储过程

    总结,Struts2调用存储过程涉及数据库连接、DAO设计、Action控制和视图展示等多个环节。通过合理配置和编程,我们可以有效地利用存储过程提升应用的效率和灵活性。"Struts2_crud2.0_Procedure"示例提供了具体实现,...

    oracle存储过程学习经典[语法+实例+调用]

    - **调用示例**:调用存储过程可通过`EXECUTE MY_PROCEDURE('ONEPARAMETER');`实现。 - **存储过程与函数的区别**: - 函数通常有返回值,可以在SQL查询中直接调用; - 存储过程主要用于执行操作,没有返回值(但...

    NHibernate 执行存储过程

    除了使用SQL查询,NHibernate还提供了HQL(Hibernate Query Language)和Criteria API来调用存储过程,但这通常需要自定义映射和实现一些额外的逻辑。这通常比直接使用SQL查询更复杂,但在某些情况下可能是更合适的...

    oracle 存储过程学习经典

    - **使用Hibernate调用存储过程**: Hibernate提供了一种便捷的方式来调用存储过程,并处理结果集。 #### 九、在存储过程中做简单动态查询 - **本地动态SQL**: 直接在存储过程中构建动态SQL语句。 - **使用DBMS_SQL...

    存储过程入门

    调用存储过程,可以使用EXECUTE命令,同时也可以通过Hibernate或Java等应用程序调用。存储过程可以无返回值,也可以有返回值,返回值可以是非列表类型,也可以是列表类型。动态查询在存储过程中也是常见需求,可以...

    oracle存储过程学习经典

    Oracle存储过程的参数可以是输入(IN)、输出(OUT)、或同时具有输入输出(INOUT)的能力,IN参数需要在调用时传入值,OUT参数则将存储过程的计算结果返回给调用者,而INOUT参数既可以在调用时传入值,也可以从存储...

    hibernat调用过程和函数

    ### Hibernate调用存储过程详解 #### 一、概述 Hibernate 是一个开源的对象关系映射(ORM)框架,它简化了Java应用与数据库之间的交互过程。本文主要探讨如何在Hibernate中调用存储过程,并通过示例代码来具体分析...

Global site tag (gtag.js) - Google Analytics