Opa pessoal… to montando um objeto com padrão builder, pra funcionar como Query, pra montar facil consultas e num ficar criando SQL atoa…
Gostaria de opinião de vcs, não sei c to reiventando a roda auhahuahu … ^^
É bem facil de criar um objeto desse pra funcionar como criador de consultas pra uma entidade… segue o exemplo
[code]import modelo.persistencia.queryobject.*;
//Pais = a uma entity … e o segundo argumento é sempre o proprio objeto que estou criando.
public class PaisWhere extends Where<Pais, PaisWhere> {
public PaisWhere() {
//tem que definir o construtor assim, para que o objeto abstrato saiba qual é a entidade.
super(Pais.class);
}
//Pais tem o campos "nome" que é uma string
public QueryStringArgument<Pais, PaisWhere> _nome() {
return createStringColumn("nome");
}
//Pais tem o campos "id" que é um Numero
public QueryNumericArgument<Pais, PaisWhere> _id() {
return createNumberColumn("id");
}
}[/code]
1° lugar, não estranhem o nome do método iniciando por "_" é apenas uma forma de filtrar os métodos
depois disso criar um SQL é muito simples
[code]Builder query = new
PaisWhere() //neste parte as unicas opções são os métodos _nome() e _id()
._nome() //agora as únicas opções são _like(String), _startLike(String), _equals(String), entre outros…
._startLike(“B”) //agora as unicas opções são _or(), _and() e _build()
._or() //aqui volta para o incio, as opções são _nome() e _id()
._id() //aqui as opções são _equals(Number), _greater(Number), _equalsOrGreater(Number), entre outros…
._greater(10) //aqui as opções voltam a ser _or(), and() e _build()
._build(); //aqui o objeto é construido
System.out.println(query.toString());[/code]Ps.: não sei pq, o “code” aki do guj inguliu os “_” antes do nome dos métodos
A saida do console é
from Pais t1 where t1.nome like 'B%' or t1.id > 10
Gostaria de saber se tem muita coisa do genero por ai, e se tiver onde tem documentação disso preu dar uma olhada… vlw ^^
a forma de usar é bem fácil, com qualquer ferramente como eclipse, basta digitar os
._
após cada método, que o eclipse filtra e mostra só as opções possiveis, os outros métodos são todos ineretes a Object