hibernate里使用jdbc方式调用oracle带游标返回参数的简单分页存储过程
来源:互联网 发布:中原工学院软件类 编辑:程序博客网 时间:2024/05/17 03:19
最近要学一个hibernate调用游标,找来找去也没找到如何调用,最后看了许多文章,用jdbc方式来调用也是可以的,但是效率上就不行了,因为每次都要连接数据库,从而放弃了hibernate的对象持久化,下面就是整个代码:
希望能帮到有需要的人!!!
SQL 代码
--创建表
create table shop(
sid int primary key no tnull,
sname varchar(20) not null,
price int not null
);
--创建包头,声明游标,两个参数,当前页和每页显示的数量,还有一个游标用于接收返回的结果集
create or replace package pkg_query as
type my_ref_cursor is ref cursor;
procedure pro_query(curpage int,pagesize int,val out my_ref_cursor);
end pkg_query;
--创建包体
create or replace package body pkg_query as
procedure pro_query(curpage int,pagesize int,val out my_ref_cursor)
is
v_sql varchar(1000):='';
begin
v_sql:='select * from (select rownum as rn,sid,sname,price from shop where rownum<= '||curpage*pagesize|| ' )where rn >='||pagesize*(curpage-1);
dbms_output.put_line(v_sql);
open val for v_sql;
end;
end pkg_query;
注意:包头和包体要分开执行
java代码:
public List findByPage(int curpage,int pagesize)
{
List list = null;
try {
//获取存储过程,问号代表参数
CallableStatement csmt = getSession().connection().prepareCall("{call pkg_query.pro_query(?,?,?)}");
//设置参数,可以使用名字或者顺序位置
csmt.setInt("curpage",curpage);
csmt.setInt("pagesize",pagesize);
//设置返回参数
csmt.registerOutParameter("val", oracle.jdbc.OracleTypes.CURSOR);
//执行过程
boolean b = csmt.execute();
//获得打开的游标(结果集)
ResultSet rs = (ResultSet)csmt.getObject("val");
//循环添加就OK了
list = new ArrayList();
while(rs.next())
{
Shop shop = new Shop();
shop.setSid(rs.getLong("sid"));
shop.setSname(rs.getString("sname"));
shop.setPrice(rs.getLong("price"));
list.add(shop);
}
} catch (DataAccessResourceFailureException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (HibernateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
希望能帮到有需要的人!!!
- hibernate里使用jdbc方式调用oracle带游标返回参数的简单分页存储过程
- jdbc中调用oracle 返回游标类型的存储过程
- jdbc中调用oracle 返回游标类型的存储过程
- JAVA调用ORACLE带数组输入参数和返回游标结果集的存储过程
- VBA调用带游标返回值的ORACLE存储过程
- java jdbc 调用 oracle存储过程 返回游标
- java jdbc 调用 oracle存储过程 返回游标
- Java jdbc调用oracle存储过程返回游标例子
- Oracle存储过程返回带参数游标方法汇总
- JDBC调用存储过程输出游标参数的存储过程
- JDBC调用SQL存储过程返回游标
- spring jdbc调用oracle 存贮过程 返回游标类型的参数
- 在java的hibernate3框架中调用oracle数据库中带游标参数的存储过程
- hibernate 调用存储过程 返回游标 实例
- vb调用oracle数据库返回游标的存储过程
- java通过prepareCall调用oracle返回游标的存储过程
- java 调用Oracle存储过程(输入参数,输出参数,游标)的使用!
- oracle存储过程中游标的使用(包括带参数的游标)
- Sicily题目分类
- 2011.11.1 poj2485 Highways 解题报告
- 记录一下,关于Instagram
- Ubuntu on phones, tablets, TV’s and smart screens everywhere
- jquery+struts+json实现表单提交
- hibernate里使用jdbc方式调用oracle带游标返回参数的简单分页存储过程
- flex 仿QQ(一)
- Defining PeopleCode Events
- 读写自旋锁详解,第 1 部分
- DRM-Dynamic Resource Management
- 关于stm32 103ze工程
- contextpath, servletpath, requesturi, realpath区别
- Becoming a Testing Expert
- 学习 Linux,101: 管理磁盘配额