2012-12-21 34 views
6

Oracle 11g'de saklı bir işlevden döndürülen bir değer (Tamsayı değeri) almaya çalışıyorum. Ben çizgi var benim mapper arayüzdedönüş değeri Mybatis

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

:

fonksiyon giriş numarasına 10 ekler

Integer add(Integer input); 

Ve XML dosyasında

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

çağrı için yöntem şu şekildedir:

Integer sum = mapper.add(45); 

Ama şu hatayı alıyorum:

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' 

yanlış yapıyorum? Ben bununla gerçekten kayboldum ...

Teşekkür ederim.

parameterType="int" resultType="int" 

belirli çıkışını sökün ve şu şekilde yapmayı deneyin:

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

cevap

1

Çözüm: MyBatis döndürme türü void olmalıdır Böyle hem ParameterType ve ResultType tanımlamadıysanız Neden

1

. Aradığım sonuç parametresi, işlev/prosedürün geri döndüğü ResultMap içinde.

Saygılarımızla.