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;
}