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

为什么你没有像这样定义 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 回答
1

解决方案:MyBatis 返回类型必须为void. 我正在寻找的结果参数在函数/过程返回的 ResultMap 中。

问候。

于 2013-01-31T08:07:36.070 回答