ibatis調用帶參的存儲過程,包括存儲過程帶有多個輸入輸出參數,整個開發過程如下:
1. 編寫存儲過程,以下存儲過程分別帶有三個輸入參數,兩個輸出參數。
CREATE PROCEDURE [dbo].[sp_statJB](@cyear char(4) ,@halfyear varchar(10),@empflag char(1),@result1 varchar(10) out ,@result2 varchar(10) out)
AS BEGIN
SET NOCOUNT ON;
set @result1=dbo.f_getJBamount(@cyear,@halfyear,1,’公有經濟’)
set @result2=dbo.f_getJBamount(@cyear,@halfyear,0,’高等教育’)
END
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;
}