Я использую 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.
// Uhlén