8

Oracle 11g のストアド関数から戻り値 (整数値) を取得しようとしています。

この関数は、入力数値に 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' 

私は何を間違っていますか?私はこれで本当に迷っています...

ありがとうございました。

4

2 に答える 2

1

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

よろしく。

于 2013-01-31T08:07:36.070 に答える
1

次のように parameterType と resultType の両方を定義していない理由:

parameterType="int" resultType="int"

特定の出力を削除して、次のようにしてみてください。

<select id="add" parameterType="int" resultType="int" statementType="CALLABLE">
    { CALL ADD_TEN(#{input, mode=IN, jdbcType=INTEGER})}
</select>
于 2012-12-21T13:12:53.073 に答える