Informix SP没有使用MyBatis返回映射的bean

时间:2016-02-02 20:58:59

标签: mybatis informix

我们有一个完美的Informix存储过程,进入数据库并返回一些具有各种值的寄存器。

当我们想在MyBatis上使用此SP时,问题就出现了。我们有一个测试用例,我们调用一个用mapper调用存储过程的方法,当我们执行它时,它似乎完成了他的工作(列表的大小是5,寄存器的数量是相同的数据库上的SP返回)但所有寄存器都为空。

我们认为映射器没有将值映射到bean,因此寄存器为空。但我们不确定。

我们正在调用这样的商店程序

      <select id="requestAllCoberturasPlan"
      parameterType="RequestCoberturasPlanEvent"          
      statementType="CALLABLE">

{
    #{lstCoberturasPlan, jdbcType=CURSOR, mode=OUT, resultMap=requestAllCoberturasPlanResultMap, javaType=java.sql.ResultSet} =
    call sp_plan_cobervida
    (
        #{cveLinea, jdbcType = SMALLINT, mode = IN},
        #{cveProd, jdbcType = SMALLINT, mode = IN},
        #{cvePlan, jdbcType = SMALLINT, mode = IN},
        #{idSolicitud, jdbcType = SMALLINT, mode = IN}
    )
}
    </select> 

有人面临这样的问题吗?请,我们需要所有帮助。

2 个答案:

答案 0 :(得分:0)

您不需要过程调用的out参数部分。只需使用此

<select id="requestAllCoberturasPlan"
  parameterType="RequestCoberturasPlanEvent"          
  statementType="CALLABLE" resultMap=requestAllCoberturasPlanResultMap>
{call sp_plan_cobervida
    (
    #{cveLinea, jdbcType = SMALLINT, mode = IN},
    #{cveProd, jdbcType = SMALLINT, mode = IN},
    #{cvePlan, jdbcType = SMALLINT, mode = IN},
    #{idSolicitud, jdbcType = SMALLINT, mode = IN}
    )
 }
</select> 

看一下本教程:http://www.tutorialspoint.com/mybatis/mybatis_stored_procedures.htm

答案 1 :(得分:0)

当您使用Informix存储过程时,为返回参数命名非常重要。

请参阅https://www.ibm.com/support/knowledgecenter/SSGU8G_11.50.0/com.ibm.udr.doc/ids_udr_096.htm

The syntax for the CREATE PROCEDURE/FUNCTION statement is:
RETURNS/RETURNING data_type AS return_param_name [{, data_type AS
return_param_name}]