一种使用Hibernate自身存储过程功能,一种绕过Hibernate,通过JDBC调用存储过程。
数据库bookshop中创建一个proc_users的存储过程,即在SQLyog中创建存储过程:create procedure proc_users() select * from users;
1、使用HIbernate:
首先在持久化类Users的映射文件Users.hbm.xml中配置对存储过程的调用,相关配置如下:
<sql-query name="getAllUsers" callable="true">
<return alias="u" class="com.hibtest2.entity.Users">
<return-property name="id" column="Id"></return-property>
<return-property name="loginName" column="LoginName"></return-property>
```
</return>
{call proc_users()}
</sql-query>
通过测试类执行命名查询实现对存储过程的调用:List userList=session.getNameQuery("getAllUsers").list();
2、通过JDBC调用存储过程:
Sesssion session=HIbernateSessionFactory.getSession();
tx=session.beginTransaction();
session.doWork(
new Work(){
@Override
public void execute(Connection connection) throws SQLException{
CallableStatement cstat=connection.prepareCall("{call proc_users()}");
ResultSet rs=cstat.executeQuery();```````
}
}
);