2012-12-21 23 views
6

Oracle 11gのストアド・ファンクションから戻り値(整数値)を取得しようとしています。私はライン持っている私のマッパーインタフェースで戻り値Mybatis

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

機能は、入力番号に10を追加し

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' 

何をしているのですか?私は本当にこれで失われています...

ありがとう。あなたはこのようのParameterTypeとresultTypeとの両方を定義していないのはなぜ

答えて

1

ソリューション:MyBatisの戻り値の型がvoidでなければなりませんが。私が探していた結果パラメータは、関数/プロシージャが返すResultMapにあります。

よろしくお願いいたします。

1

parameterType="int" resultType="int" 

は、特定の出力を削除し、このようにそれを作ってみる:

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