【发布时间】:2026-01-25 22:15:02
【问题描述】:
我想在调用 oracle 过程后返回原始类型, 这是我的mybatis界面:
public interface ProcedureMapper {
int getProcedureResult();
}
我想执行一个过程或函数然后返回状态,我尝试了下面的配置:
<select id="getProcedureResult" statementType="CALLABLE" resultType="int">
BEGIN
EXECUTE IMMEDIATE 'CREATE TABLE temp_tt (id NUMBER(12) )';
#{status,mode=OUT,jdbcType=INTEGER} := 0;
EXCEPTION
WHEN OTHERS THEN
#{status,mode=OUT,jdbcType=INTEGER} := -1;
END;
</select>
不起作用,会抛出异常:
Caused by: org.apache.ibatis.reflection.ReflectionException: Could not set property 'status' of 'class java.lang.Class' with value 'null' Cause: org.apache.ibatis.reflection.ReflectionException: There is no setter for property named 'status' in 'class java.lang.Class'
我知道我可以将 resultType 设置为带有“status”属性的 Java Bean,但我只想返回原始类型而不是 Java Bean,有什么想法吗?
【问题讨论】:
-
也许这会起作用:*.com/questions/14903159/…
-
这里似乎有讨论mybatis-user.963551.n3.nabble.com/… - 但结果并不令人鼓舞。
-
从网址找不到解决办法
-
正如我所说,这只是一个讨论,结果似乎是,如果您的过程调用实际上没有返回某些内容而只写入 OUT 参数,则这是不可能的。