存储过程返回 2 结果集 mybatis 3

stored procedure returning 2 result set mybatis 3

你好,

mybatis 3遇到问题已经2天了

我有一个存储过程 return 2 个结果集(object1 的结果集,object2 的结果集)。

我已经为每个结果集创建了一个 resultMap

object1 的结果映射(创建一个 class pojo Object1) object2 的结果映射(创建一个 class pojo Object2)

像这样给出:

    <resultMap id="object1" type="Object1" />
    
    <resultMap id="object2" type="Object2" />

对于存储过程的调用,我有这个:

    <select id="pscall" parameterType="Integer" 
        resultMap="object1,object2" statementType="CALLABLE">       
        { CALL PS(
            #{id, mode=IN},
        ) }
    </select>

现在,当执行所有这些时,我有效地得到了两个列表,其中包含 object1 和 object2 所需的数量,但这两个列表充满了空对象,就像第一个列表一样,我得到了 3 个元素,它们都是空的,并且第二个20个元素全部为null.

我知道我做的映射有问题,但此时我看不出问题出在哪里。

您要求我们推论很多,但我认为很明显多结果集处理的基本机制正在正常工作(您得到正确数量的对象)。不起作用的是将行映射到对象。只有当 Object1 和 Object2 没有任何与从 SP 返回的列相匹配的属性时才会发生这种情况。

例如,如果第一个结果集包含 "ID, DESCRIPTION",则 Object1 必须具有 "id" 和 "description" 属性(不区分大小写)。

如果您不知道 SP 会返回什么,请将每个 <resultMap>type 更改为 map。然后 MyBatis 将构建映射列表,您可以在映射中查看从 SP 返回的值及其列名。