2012-12-21 3 views
6

Ich versuche, einen zurückgegebenen Wert (ein Integer-Wert) von einer gespeicherten Funktion in Oracle 11g zu erhalten.Rückgabewert Mybatis

Die Funktion fügt 10 an die Eingangsnummer:

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

In meiner Mapper-Schnittstelle habe ich die Zeile:

Integer add(Integer input); 

Und in XML-Datei

<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>` 

Der Aufruf Die Methode ist wie folgt:

Integer sum = mapper.add(45); 

Aber ich bin immer folgende Fehlermeldung:

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' 

Was mache ich falsch? Ich bin wirklich verloren mit diesem ...

Vielen Dank.

Antwort

1

Lösung: Mybatis Rückgabetyp void sein muss . Der Ergebnisparameter, nach dem ich gesucht habe, befindet sich in der ResultMap, die Funktion/Prozedur zurückgibt.

Grüße.

1

Warum Sie nicht beide Parametertype und result wie folgt definiert sind:

parameterType="int" resultType="int" 

entfernen spezifische Leistung und versuchen, es so zu machen:

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