oracle 返回 值 Mybatis

vi4fp9gy  于 2022-11-22  发布在  Oracle
关注(0)|答案(2)|浏览(179)

我尝试从Oracle 11 g中的存储函数获取返回值(整数值)。
此函数将输入数字加10:

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

在我的mapper界面中,我看到了这样一行:

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'

我做错什么了?我真的搞不懂...

  • 谢谢-谢谢
ctehm74n

ctehm74n1#

为什么没有像下面这样定义parameterType和resultType:

parameterType="int" resultType="int"

删除特定的输出,并尝试使其如下所示:

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

9lowa7mx2#

解决方案:MyBatis返回类型必须为void。我要查找的结果参数位于函数/过程返回的ResultMap中。

相关问题