hibernate调用过程、函数

本文详细介绍了如何使用Hibernate API 和 JDBC 调用存储过程及函数,包括通过CallableStatement实例化、参数设置、执行查询以及获取结果的完整流程,并通过XML映射方式进一步展示灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.通过Hibernate API或者JDBC,API调用存储过程:

	CallableStatement cal = sess.connection().prepareCall(
			"{Call scott.selectdept(?,?)}");
	cal.setString(1, 10 + "");
	cal.registerOutParameter(2, OracleTypes.CURSOR);
	cal.executeQuery();
	ResultSet rs = (ResultSet) cal.getObject(2);
	while (rs.next()) {
		System.out.println(rs.getString(1) + "  " + rs.getString(2));
	}

调用函数(不是SQL语句):

		CallableStatement cal=con.prepareCall("{call ?:=get_sal(?)}");//函数
		cal.registerOutParameter(1, Types.DOUBLE);
		cal.setString(2, "7369");
		cal.executeQuery();
		String ss=cal.getString(1);
		System.out.println(ss);

2.直接使用 Hibernate createQuerySql调用函数:

	Session sess=fac.getCurrentSession();
	Transaction tran = sess.beginTransaction();
	SQLQuery squery = sess
		.createSQLQuery("select get_sal(?) from scott.emp");
	squery.setParameter(0, "7369");
	List list = squery.list();
	tran.commit();

3.通过XML传统的映射方式去调用:

<sql-query name="funtest" callable="true">  
    <return alias="emp" class="org.han.entity.Emp">  
        <return-property name="empno" column="empno"></return-property>  
        <return-property name="ename" column="ename"></return-property>  
        <return-property name="job" column="job"></return-property>  
        <return-property name="mgr" column="mgr"></return-property>  
        <return-property name="hiredate" column="hiredate"></return-property>  
        <return-property name="sal" column="sal"></return-property>  
        <return-property name="comm" column="comm"></return-property>  
        <return-property name="dept" column="deptno"></return-property>  
        <return-property name="version" column="version"></return-property>  
    </return>  
    {?=call getemp.getempc(?)}  
</sql-query>
调用:
List<Emp> emps=session.getNamedQuery("funtest").setInteger(0, 10).list();  
for (Emp emp : emps) {  
    System.out.println(emp);  
}

4.hibernate注册自定义函数:

点击打开链接




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值