近期一直都在给老板做项目,空闲时间不多,好久没来博客园了,今天算是空闲下来,过来记录下做JavaEE项目时遇到的问题。本文需要持续更新……
1、Hibernate调用无参存储过程问题
最近一起做项目的朋友总是问我Hibernate中如何调用存储过程,其实我也记不清楚详细的步骤是怎样的,每次都是现从网上找到具体的例子,然后再告诉他们怎么搞,感觉这样做多少遍都没有实际的意义,倒不如今天就记录一下,也算给自己长长记性。
其实Hibernate调用存储过程主要有如下5个步骤:
- 声明变量,包括Connection,CallableStatement
- 获得connection连接
- 使用Connection的prepareCall方法关联存储过程,返回CallableStatement对象
- 调用CallableStatement对象的execute()执行存储过程
- 获取存储过程的返回值
- 关闭Connection,CallableStatement
通过上述6个步骤就可以应对无参存储过程了。
具体举例如下:
//1、声明变量 Connection conn = null; CallableStatement call = null; //2、获得Connection Session session = HibernateSessionFactory.getSession() ; conn = session.connection(); try { //3、调用prepareCall方法 call = conn.prepareCall("{call Pro_GetSerialIDNvarcharByFQCBatchCheckout(?)}"); call.registerOutParameter(1, java.sql.Types.VARCHAR); //4、执行存储过程 call.execute(); //5、获取返回值 id = call.getString(1); } catch (SQLException e) { e.printStackTrace(); }finally { //6、关闭连接 try { if (call != null){
call.close();
call=null; } if (conn != null){
conn.close();
conn=null; } } catch (SQLException e) { e.printStackTrace(); } }
由于第一次使用SSH做项目,细节问题不是特别清楚,所有若上述描述中存在问题,希望各位不吝赐教,先行谢过啦。