ibatis调用Oracle中的function


先做这样的假设,学生的学号和姓名可以唯一确定一个学生。


Oracle存储过程

create or replace function get_stu_birth(vid varchar,vname varchar) return date is
vbirth date;
nnumber;

begin
select count(*), birth into n , pbirth from student where id = vid and name = vname;
if n>0 then
vbirth:=pbirth;
else
null;
end if;
return vbirth;
end;


StudentSqlMapper.xml

<sqlMap namespace="studentMapper">
<parameterMap id="stuparam" class="java.util.Map">
<parameter property="vbirth" jdbcType="DATE" javaType="java.lang.String" mode="OUT" />
<parameter property="vid" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" />
<parameter property="vname" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN" />
</parameterMap>

<procedure id="stuproc" parameterMap="stuparam">
<![CDATA[
{? = call get_stu_birth(?,?) }
]]>
</procedure>
</sqlMap>


Student.java

Map<String, String> mapIn = new HashMap<String, String>();
mapIn.put("vid", "100");
mapIn.put("vname", "xy");
mapIn.put("vbirth", "");
sqlMap.queryForObject("studentMapper.stuproc", mapIn);
Date birth = DateUtil.toDate(mapIn.get("vbirth").substring(0, mapIn.get("vbirth").length() - 2), "yyyy-mm-dd hh24:mi:ss");

在执行完这句话之后baseDao.selectObject("studentMapper.stuproc", mapIn),mapIn.get("vbirth")的值已经被装进去了。

格式如2012-1-1 12:12:12.0,所以要处理一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值