Выходной параметр хранимой процедуры, установленный в POJO iBATIS
я использую iBATIS для вызова хранимой процедуры на сервере MSSQL, входные параметры-это свойства 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 создаст объекты для выходных параметров" так что это имеет смысл. Но мой вопрос в том, есть ли способ проинструктировать iBATIS вернуть логическое значение в POJO после процедуры звонил? Я предпочитаю не делать дополнительную работу по получению значения из карты и установить его в POJO себя.
/ / Uhlén
1 ответов
вы можете использовать явный параметр. См. страница 21 руководства
его довольно многословный, но его работал для меня в прошлом.
<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>