hibiernate 调用oracle 存储过程

今天试了试 hibernate 调用存储过程
中间遇到了些问题,网上有很多,但是很多都是通过Session得到Connection 而后通过jdbc的方式调用存储过程,和hibernate 没有太大的关系,因此我把我的分享好
1.表结构只是举个例子
create table USERS
(
ID INTEGER not null,
USERNAME VARCHAR2(20) not null,
PASSWORD VARCHAR2(20) not null
)

2.存储过程定义好,我用了函数、用到了包
--head
create or replace package think is
type result_cursor is ref cursor;
function fselUser return result_cursor;
function fselUser(na in varchar2) return result_cursor;
end think;
--body
function fselUser
return result_cursor is pcursor result_cursor;
begin
open pcursor for select * from users;
return pcursor;
end fselUser;

function fselUser(na in varchar2) return result_cursor is pcursor result_cursor;
sqlstr varchar(1000):='';
begin
sqlstr:='select * from users where users.username like ''%'||na||'%''';
dbms_output.put_line(sqlstr);
open pcursor for sqlstr;
return pcursor;
end fselUser;
end think;
3.XXX.hbm.xml的配置
<hibernate-mapping package="dao">
<class name="Users" table="USERS" schema="DING">
<id name="id" type="java.lang.Long">
<column name="ID" precision="22" scale="0" />
<generator class="sequence">
<param name="sequence">SEQ_USER_ID</param>
</generator>
</id>
<property name="username" type="java.lang.String">
<column name="USERNAME" length="20" not-null="true" />
</property>
<property name="password" type="java.lang.String">
<column name="PASSWORD" length="20" not-null="true" />
</property>
</class>
[color=blue]<sql-query callable="true" name="users">
<return alias="users" class="Users">
<return-property name="id" column="ID" />
<return-property name="username" column="USERNAME" />
<return-property name="password" column="PASSWORD" />
</return>
{ ? = call think.fselUser(?) }
</sql-query>[/color]
</hibernate-mapping>
4. 下面把调用说哈
public List findUserByFunction(String str){
Session session= getHibernateTemplate().getSessionFactory().openSession();
Query query=session.getNamedQuery("Users");
query.setParameter(0, str);//索引从0开始的,设置参数
List ll=query.list();
session.close();
return ll;
}
怎么使用就是你自己的事情了,以上代码仅做参考,有什么不对的地方还请指正,希望对你有所帮助
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值