Oracle中实现分页的存储过程,返回类型为游标,在java中进行接收
/*
在Oracle中建立存储过程
/
create or replace package page_package as
type p_cursor is ref cursor;end page_package;//创建包
//实现分页
create or replace procedure pro_page(page in number,psize in number,z_page out number,cnum out number,p_cur out page_package.p_cursor)
as
begin
select count()into cnum from userinfo;
z_page:=ceil(cnum/psize);
open p_cur for ‘select * from(select rownum rn,u.* from userinfo u where rownum<=’||pagepsize||’) where rn>’||psize(page-1);
end;
//编写java类
//Mapper接口所实现的
package com.xa.mapper;
import java.util.Map;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.ResultType;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.mapping.StatementType;
import com.xa.entity.Userinfo;
public interface IUserMapper {
//分页
/*
调取存储过程,“p1”,"p2"表示输入的页数和每页显示的个数
p3,表示输出查询结果的总页数
p4,表示总记录数
p5用游标接收,表示查询的结果集
*/
@Select({“call pro_page(//存储过程名
#{p1,mode=IN,jdbcType=INTEGER},
#{p2,mode=IN,jdbcType=INTEGER},
#{p3,mode=OUT,jdbcType=INTEGER},
#{p4,mode=OUT,jdbcType=INTEGER},
#{p5,mode=OUT,jdbcType=CURSOR,resultMap=result})”})
@Results(id=“result”,value={//查询的结果集,与实体类对应
@Result(id=true,column=“u_id”,property=“u_id”),
@Result(column=“u_name”,property=“u_name”),
@Result(column=“birthday”,property=“birthday”),
@Result(column=“c_id”,property=“c_id”)
})
@ResultType(com.xa.entity.Userinfo.class)//类型为对应的实体类
@Options(statementType=StatementType.CALLABLE)
public void callProc(Map map);
}
//实现类
package com.xa.service;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.xa.entity.Userinfo;
import com.xa.mapper.IUserMapper;
@Service(“userService”)
public class UserServiceImp {
@Autowired
private IUserMapper userMapper;
public void callPro(Map map) {
// TODO Auto-generated method stub
userMapper.callProc(map);
}
}
//测试类
package com.xa.test;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.mapping.ResultMap;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.xa.entity.Userinfo;
import com.xa.service.IUserService;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
BeanFactory bf=new ClassPathXmlApplicationContext(“applicationContext.xml”);
IUserService userService=(IUserService)bf.getBean(“userService”);
Map map=new HashMap();
map.put(“p1”, 1);//表示第一页
map.put(“p2”, 2);//表示每页只显示2条数据
userService.callPro(map);
int z_page=(Integer)map.get(“p3”);
int znum=(Integer)map.get(“p4”);
System.out.println(“总页数为:”+map.get(“p3”)+"\n总记录数为:"+map.get(“p3”));
List list=(List)map.get(“p5”);
for (Userinfo userinfo : list) {
System.out.println(userinfo.getU_name());
}
}
}
- java 调用oracle 分页存储过程 返回游标数据集
- 当java调用oracle的存储过程时,存储过程的返回值类型不能为boolean
- jdbc中调用oracle 返回游标类型的存储过程
- oracle存储过程中使用Ref Cursor强类型游标返回结果集
- 最重要的也是最实用的(oracle运用存储过程嵌套游标来实现分页)
- java 中 接收 oracle存储 返回的游标
- Java调用oracle存储过程通过游标返回临时表数据
- Java调用oracle存储过程通过游标返回临时表数据
- 利用jdbc对数据表进行分页,操作存储过程(有参与无参,返回游标),函数等
- jdbc中调用oracle 返回游标类型的存储过程
- oracle实现存储过程的分页并用java代码调用存储过程
- Oracle 存储过程调用 返回结果集 实现分页
- JAVA调用ORACLE带数组输入参数和返回游标结果集的存储过程
- C#执行oracle返回游标类型的存储过程
- Java调用oracle存储过程通过游标返回临时表数据
- C#执行oracle返回游标类型的存储过程
- 通过游标实现分页存储过程
- {传智播客} (学习笔记)--Java调用存储过程实现Oracle数据库分页
- java调用Oracle分页存储过程
- 一个简单的oracle分页存储过程的实现和调用