Hibernate3调用存储过程用法

DB2中简单存储过程 selectAllUsers

CREATE  procedure selectAllUsers 
DYNAMIC RESULT SETS 1
BEGIN 
      DECLARE temp_cursor1 CURSOR  WITH RETURN TO CLIENT  FOR 
      SELECT * FROM  test;   
      OPEN temp_cursor1;
END;

映射文件中关于存储过程内容如下

<hibernate-mapping package="com.unmi.vo">
    <class name="Test" table="TEST">
     ............
    </class>

    <sql-query callable="true" name="selectAllUsers">
<return alias="aa" class="Test">
    <return-property name="oborqt" column="OBORQT"/>
    <return-property name="moorqt" column="MOORQT"/>
    <return-property name="roschn" column="ROSCHN"/>
    <return-property name="plandate" column="PLANDATE"/>
</return>
{ ? = call selectAllUsers() }
    </sql-query>
</hibernate-mapping>

{ ? = call selectAllUsers() } 也可以写成{ call selectAllUsers() },
如果有参数就写成
{ ? = call selectAllUsers(?,?,?) }
代码中对query设置相应位置上的值就OK

Java调用关键代码如下
      
  Session session = HibernateUtil.currentSession();
  Query query = session.getNamedQuery("selectAllUsers");
  List list = query.list();
  System.out.println(list);

要求你的存储过程必须能返回记录集,否则要出错
如果你的存储过程是完成非查询任务就应该在配置文件用以下三个标签
  <sql-insert callable="true">{call createPerson (?, ?)}</sql-insert>
  <sql-delete callable="true">{? = call deletePerson (?)}</sql-delete>
  <sql-update callable="true">{? = call updatePerson (?, ?)}</sql-update>

有一点不好的地方就是调用存储过程获取记录集时,不能对Query使用
setFirstResult(int)和setMaxResults(int)方法来分页


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=481545

<script src="/PromoteIcon.aspx?Id=481545" type="text/javascript"> </script>[ 点击此处收藏本文]   发表于 2005年09月15日 4:41 PM
href="http://blog.csdn.net/kypfos/Services/Pingback.aspx" rel="pingback"/>
style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0px; BORDER-TOP: medium none; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: medium none; WIDTH: 156px; PADDING-TOP: 0px; BORDER-BOTTOM: medium none; HEIGHT: 22px" src="http://blog.csdn.net/search_iframe.html" frameborder="0" scrolling="no">

<script type="text/javascript"> document.write("<img src=http://counter.csdn.net/pv.aspx?id=24 border=0 width=0 height=0>"); </script>

 
doctor evil 发表于2005-11-19 1:31 PM  IP: 61.188.196.*
我想问问你{ ? = call selectAllUsers(?,?,?) } 这个怎么给他传参数哦

 
doctor evil 发表于2005-11-19 1:32 PM  IP: 61.188.196.*
我想问问你{ ? = call selectAllUsers(?,?,?) } 这个怎么给他传参数哦
我的联系方式
QQ:155162152
MSN:liuyang77886@hotmail.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值