存储过程返回 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 返回的值及其列名。
你好,
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 返回的值及其列名。