quarta-feira, 1 de abril de 2009

iBatis + Spring + Flex = uau

Acho que fiquei loko de vez, em plena ferias to aproveitando pra aprender ibatis
e to fazendo isso convertendo um sistema simples, desenvolvido em um esquema velho
em MVC.

a ideia é aproveitar e fazer a jogadinha iBatis+spring +flex
mas como diz Jack, vamos por parte.

ate agora ta divertido e estou postando algumas dicas sobreo ibatis que estou encontrando:

1- cuidade em usar $xxx$, isso é bom pra gerar sql dinamico mas conforme a implementação abre espaço para um ataque sqlinjection, ex: voce colocar pra ordenar dinamicamente a tabela passando como paramentro o campo atravez de um lik na coluna /servlet?allCliente&orderBy=nome , e la na sql vc usa
order by $orderBy$ o cara pode mandar um comendo junto com a url.
nesses casos melhor usar alguma hash map ou ate mesmo enum para pega o paramentro e trocar pelo nome da coluna.

2 - result property="estado.id" column="estado_id" . isso serve para mapear uma bean que tenha como atributo uma outra bean e vc vai fazer um select so com join.

3 - Como fazer like com % já que no ibatis ele vai trocar? simples no sql vc usa o recurso de concatenar string do banco de dados ex. postgres where nome like '%' || #valuee# || '%'

4- typeAlias alias="Passaro" isso serve para colocar um apelido para a classe. assim vc nao precisa ficar passando sempre br.com.suaempresa.bean.Obejeto
nos depais tags sql vc so passa Passaro.

5 - sql id="fragmentWherePassaro". Esse é sem duvida o recurso mais interesante do ibatis. imagina que vc tem dois select um com count e outro o select normal. os dois utilizan a mesma clausula where. vc faz o where em uma tag separada e pode usar nos dois ou outros sql, lembrando sempre que o where pode ser dinamico

6 - nome dos parametro ex. #cliente.id# coloque #clienteID# se nao ele nao acha no map, para o ibatis o cliente.id ele vai tentan procurar por um objeto cliente com atributo id e nao um parametro "cliente.id"

o proximo post vou mostar algus configurações para usar spring com anotaçlões e com um service e dao generica e o terceiro e o Flex