quinta-feira, 19 de março de 2009

iBatis e Conjuntion OR

O uso da conjunction OR obriga a que se coloque um espaço antes da condição. Caso contrário o iBatis transforma tudo numa string sem espaços e dá um SQL inválido.

Exemplo:

<iterate conjunction="OR" property="params"><![CDATA[ ]]>param_1=#params[]# </iterate>

Sem o <![CDATA[ ]]> o SQL estaria todo pegado (sem espaços) e daria SQL inválido na Base de Dados

iBatis e uma Query com IN

Depois de andar às cabeçadas aqui vai a solução para como realizar uma query com IN no iBatis.

A classe ClasseParametros contém:
  • params_2 -> java.util.ListList
  • param_1 -> String

<update id="updateXpto"
parameterClass="ClasseParametros">
UPDATE tabela_xpto
SET param_1 = #param_1#
WHERE param_2 IN(
<iterate conjunction="," property="params_2">#params_2[]#</iterate>
)
</update>