我正在使用 iBATIS 在 MSSQL Server 上调用存储过程,输入参数是放置到地图的 POJO 上的属性:
Map<String, Object> saveMap = new HashMap<String, Object>();
saveMap.put("obj", myArticle);
update("save", saveMap);
所有参数都正确设置为程序的输入,因此没有任何问题。但是其中一个参数是输出参数,我希望将其设置回 POJO,但"obj.new"=false
iBATIS 将一个额外的映射放置在映射中。这是显示基本思想的映射的简化版本:
<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 文档说“在执行存储过程时 – iBATIS 将为 OUTPUT 参数创建对象”,所以这是有道理的。但我的问题是,是否有办法指示 iBATIS 在调用过程后将布尔值放回 POJO?我宁愿不做额外的工作来从地图中获取价值并将其设置为我自己的 POJO。
// 乌伦