gpt4 book ai didi

java - iBATIS 将存储过程输出参数设置回 POJO

转载 作者:IT老高 更新时间:2023-10-28 20:54:56 30 4
gpt4 key购买 nike

我正在使用 iBATIS 调用 MSSQL Server 上的存储过程,输入参数是放入映射的 POJO 上的属性:

Map<String, Object> saveMap = new HashMap<String, Object>();
saveMap.put("obj", myArticle);
update("save", saveMap);

所有参数都已正确设置为程序的输入,因此没有任何问题。但是其中一个参数是输出参数,我希望它被设置回 POJO,但是 iBATIS 将一个额外的映射 "obj.new"=false 放置在映射中。这是显示基本思想的简化版映射:

    <procedure id="save">
{<include refid="Core.returned_value" />
CALL SPRC_ARTICLE_NAME_SAVE (
<include refid = "Core.common_fields" />
@pArticle_id = #obj.art_id#
, @pArtname = #obj.artname#
, @pNewArticleName_flg = #obj.new,mode=INOUT#
)}
</procedure>

调用该过程后,我将 Map 中的两个映射传递给 iBATIS:

  • "obj"=POJO
  • "obj.new"=False

现在我看到 iBatis documentation 说“当执行存储过程时——iBATIS 将为 OUTPUT 参数创建对象”,所以这是有道理的。但我的问题是,是否有办法指示 iBATIS 在调用过程后将 boolean 值放回 POJO?我宁愿不做额外的工作,从 map 中获取值(value)并将其设置为我自己的 POJO。

//乌伦

最佳答案

您可以使用显式参数映射。见 Page 21 of the manual

它相当冗长,但过去对我有用。

<parameterMap id="swapParameters" class="map" >
<parameter property="email1" jdbcType="VARCHAR" javaType="java.lang.String" mode="INOUT"/>
<parameter property="email2" jdbcType="VARCHAR" javaType="java.lang.String" mode="INOUT"/>
</parameterMap>

<procedure id="swapEmailAddresses" parameterMap="swapParameters" >
{call swap_email_address (?, ?)}
</procedure>

关于java - iBATIS 将存储过程输出参数设置回 POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2469470/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com