usar trigger stored procedimiento llamar example ejemplo ejecutar desde como callablestatement almacenado java orm ibatis

java - trigger - llamar procedimiento almacenado sql server desde netbeans



ParĂ¡metro de salida de procedimiento almacenado establecido de nuevo en POJO por iBATIS (1)

Puede utilizar un mapa de parámetros explícitos. Vea la página 21 del manual

Es bastante detallado, pero funcionó para mí en el pasado.

<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>

Estoy usando iBATIS para llamar a un procedimiento almacenado en el servidor MSSQL, los parámetros de entrada son propiedades en un POJO que se coloca en el mapa:

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

Todos los parámetros están configurados correctamente como entrada al procedimiento, por lo que no hay ningún error. Pero uno de los parámetros es un parámetro de salida y yo esperaba que se estableciera de nuevo en el POJO, pero en su lugar, una asignación adicional "obj.new"=false es el mapa puesto por iBATIS. Aquí hay una versión simplificada de la asignación que muestra la idea básica:

<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>

Después de llamar al procedimiento, tengo dos asignaciones en el Mapa pasadas a iBATIS:

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

Ahora veo que la documentación de iBatis dice "Al ejecutar procedimientos almacenados: iBATIS creará objetos para los parámetros de SALIDA", por lo que tiene sentido. ¿Pero mi pregunta es si hay una manera de indicar a iBATIS que devuelva el valor booleano al POJO después de que se llame al procedimiento? Prefiero no hacer el trabajo extra de obtener el valor del mapa y establecerlo en el POJO yo mismo.

// Uhlén