我将 MyBAtis-3 与 MyBAtis-Spring 一起使用。当我尝试调用一个使用 MyBatis 注释返回多个输出参数的存储过程时。我什么也没得到,我可以看到输入参数在日志中传递给 SP 并且它挂在那里没有进展也没有抛出异常。
PFB 我试图从 MyBAtis 访问的 Oracle 存储过程,
create or replace PROCEDURE C2C.GET_DATA
(
"IN_PARAM1" IN NUMBER,
"OUT_PARAM2" OUT SAMPLETABLE.COL2%TYPE,
"OUT_PARAM3" OUT SAMPLETABLE.COL3%TYPE,
"OUT_PARAM4" OUT SAMPLETABLE.COL4%TYPE
) AS
BEGIN
SELECT PARAM2,PARAM3,PARAM4 INTO
OUT_PARAM2,OUT_PARAM3,OUT_PARAM4
FROM C2C.SAMPLETABLE WHERE PARAM1=IN_PARAM1 ;
END C2C.GET_DATA;
PFB映射器接口方法,
@Select(value= "{ CALL C2C.GET_DATA( #{param1, mode=IN, jdbcType=INTEGER},#{param2, mode=OUT, jdbcType=VARCHAR},#{param3, mode=OUT, jdbcType=INTEGER},#{param4, mode=OUT, jdbcType=INTEGER})}")
@Options(statementType = StatementType.CALLABLE)
public void getData(Test test);
Test 对象包含在存储过程调用语句中作为输入传递的参数。
当我执行此操作时,它会挂在这里,
main Slf4jImpl
==> Preparing: { CALL C2C.GET_DATA(?,?,?,?)}
main Slf4jImpl
==> Parameters: 60(Integer)