我们有一个完美的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>
有人面临这样的问题吗?请,我们需要所有帮助。
答案 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}]