Mostrar mensagens com a etiqueta ibatis. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta ibatis. Mostrar todas as mensagens

quinta-feira, 23 de julho de 2009

iBatis

Longe de ser um substituto directo do Hibernate, o iBatis prima pela simplicidade.

Enquanto o Hibernate é um novo paradigma, sendo necessário aprender, pelo menos, alguma da funcionalidade para não cometer erros , e onde o SQL é praticamente ausente, o iBatis é extremamente simples de usar, e não implica uma mudança de paradigma tão grande. O choque entre usar iBatis e Hibernate é consideravelmente menor no iBatis.

O iBatis simplifica a vida principalmente na passagem de valores entre um ResultSet e uma classe java. Esqueçam os ciclos e a criação de objectos para passar de um objecto para outro. O iBatis trata disso automaticamente. De resto, escreve-se SQL normal, excepto nas partes onde é necessário passar valores para a query (usa-se #valor#) e de resto pouco mais. As queries podem ficar todas agrupadas num XML. O iBatis, do meu ponto de vista, é bastante bom em projectos pequenos onde não se precisa do 'canhão' Hibernate. Consegue-se muito boa performance, consegue-se controlar muito bem o SQL que é usado (pois escreve-se SQL) e, sobretudo, é tão simples de usar e configurar.

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>