ibatis调用带参的存储过程,包括存储过程带有多个输入输出参数,整个开发过程以下: java
1. 编写存储过程,如下存储过程分别带有三个输入参数,两个输出参数。 this
CREATE PROCEDURE [dbo].[sp_statJB](@cyear char(4) ,@halfyear varchar(10),@empflag char(1),@result1 varchar(10) out ,@result2 varchar(10) out) 开发
AS BEGIN get
SET NOCOUNT ON; 配置
set @result1=dbo.f_getJBamount(@cyear,@halfyear,1,’公有经济’) jdbc
set @result2=dbo.f_getJBamount(@cyear,@halfyear,0,’高等教育’) 程序
END call
2.编写ibatis的配置文件 配置文件
<parameterMap id=”statisticalDataMap”> 存储过程
<parameter property=”cyear” jdbcType=”VARCHAR” javaType=”java.lang.String” mode=”IN”/>
<parameter property=”halfyear” jdbcType=”VARCHAR” javaType=”java.lang.String” mode=”IN”/>
<parameter property=”empflag” jdbcType=”VARCHAR” javaType=”java.lang.String” mode=”IN”/>
<parameter property=”result1″ jdbcType=”VARCHAR” javaType=”java.lang.String” mode=”OUT”/>
<parameter property=”result2″ jdbcType=”VARCHAR” javaType=”java.lang.String” mode=”OUT”/>
</parameterMap>
<procedure id=”getStatisticalData” parameterMap=”statisticalDataMap”> <![CDATA[ { call sp_statJB(?,?,?,?,?)} ]]> </procedure>
3编写java程序,传递参数并获取结果
Map<String,String> paramMap=new HashMap<String, String>();
paramMap.put(“cyear”, “2012″);
paramMap.put(“halfyear”,”下半年”);
paramMap.put(“empflag”, “0″);
getSqlMapClientTemplate().queryForObject(this.getNameSpace()+”getStatisticalData”,paramMap);
if(paramMap.get(“result1″)!=null)
{
return Integer.parseInt(paramMap.get(“result1″).toString());
}
else{
return 0;
}