日期:2014-05-16 浏览次数:20472 次
import java.io.Serializable;
import java.util.Date;
public class User implements Serializable{
private static final long serialVersionUID = -6919964218508186044L;
private int id;
private String name;
private Date birthday;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD iBatis Mapper 3.0 //EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="org.yhb.ibatis.dao.UserDAO">
<!-- 表结构
create table IBATIS_USER
(
ID NUMBER not null,
NAME VARCHAR2(20) not null,
BRITHDAY DATE not null
)
-->
<!-- 存储过程
create or replace procedure getAllUser(userList out sys_refcursor)
as
begin
open userList for select * from ibatis_user;
end;
-->
<!-- resultMap -->
<resultMap type="User" id="userMap">
<id column="id" property="id" />
<result column="name" property="name" />
<result column="birthday" property="birthday" />
</resultMap>
<!-- 调用存储过程 -->
<select id="getAllUser" statementType="CALLABLE">
{call
getAllUser(#{userList,<!-- 参数 -->
mode=OUT,<!-- 参数类型 -->
javajavaType=java.sql.ResultSet,<!-- 参数java类型 -->
jdbcType=CURSOR,<!-- 参数jdbc类型 -->
resultMap=userMap<!-- ResultSet需要resultMap参数 -->
})}
</select>
</mapper>
@Test
public void testProcedure() throws Exception {
Reader reader = null;
reader = Resources.getResourceAsReader("configuration.xml");
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader);
reader.close();
SqlSession session = ssf.openSession();
Map map = new HashMap();
session.selectOne("org.yhb.ibatis.dao.UserDAO.getAllUser", map);
System.out.println(map);
//返回的集合被放入了map中
List<User> userList = (List<User>) map.get("userList");
System.out.println(userList);
session.close();
}
--定义包声明
create or replace package pkg_stu
as
type list_stu is ref cursor;--定义游标,通过游标将数据模型结果集返回给关系模型
procedure proc_findStuList(stulist out list_stu,s_id number);
function fun_findStuList(s_id number) return list_stu;
end pkg_stu;
--包主体声明
create or replace package body pkg_stu
as
procedure proc_findStuList(stulist out list_stu,s_id number)--实现查找所有学生的存储过程
is
sqlString varchar2(500);
begin
if s_id = 0 then
open stulist for select sid,sname,major,birth,socre from student order by sid;
else
sqlString := 'select sid,sname,major,birth,socre from student where sid=:sid';
open stulist for sqlString using s_id;
end if;
end proc_findStuList;
function fun_findStuList(s_id number) --实现查找所有学生的函数
return list_stu
is
stulist list_stu;
sqlString varchar2(500);
begin
if s_id = 0 then
open stulist for select sid,sname,major,birth,socre from student order by sid;
else
sqlString