2012-12-21 75 views
6

我試圖從Oracle 11g中的存儲函數獲取返回值(整數值)。返回值Mybatis

功能增加了10到輸入號碼:

FUNCTION ADD_TEN(INPUT IN NUMBER) RETURN NUMBER IS 
BEGIN 
    RETURN INPUT + 10; 
END; 

在我的映射器接口我也行:

Integer add(Integer input); 

以XML文件

<select id="add" statementType="CALLABLE" resultType='java.lang.Integer'> 
    {#{output,mode=OUT,jdbcType=NUMERIC,javaType=Integer} = call test_pkg.ADD_TEN( 
    #{input,jdbcType=NUMERIC}) } 
</select>` 

的呼籲該方法如下:

Integer sum = mapper.add(45); 

但我發現了以下錯誤:

Could not set property 'output' of 'class java.lang.Integer' with value '55' Cause: org.apache.ibatis.reflection.ReflectionException: There is no setter for property named 'output' in 'class java.lang.Integer' 

我在做什麼錯?我真的迷失在這...

謝謝。

回答

1

解決方案:MyBatis的返回類型必須是void 。我正在查找的結果參數位於函數/過程返回的ResultMap中。

問候。

1

爲什麼你還沒有定義這兩個參數類型,並與resultType是這樣的:

parameterType="int" resultType="int" 

刪除特定的輸出,並儘量做到這樣的:

<select id="add" parameterType="int" resultType="int" statementType="CALLABLE"> 
    { CALL ADD_TEN(#{input, mode=IN, jdbcType=INTEGER})} 
</select> 
相關問題