SELECT com vários parâmetros

6 respostas
P

Bom dia, pessoal.
Sou novo no Java(bem novo) e travei numa Query da minha DAO aqui :(
O usuário pode preencher qualquer parâmetro para buscar, não há nenhum obrigatório (e são 10 params possíveis +-), o lance é o seguinte... como ficaria meu where se eu não sei o que ele preencheu?
Deu pra entender, ou ficou confuso?rs
O método tá ai em baixo pra vocês verem.

Desde já, muito obrigado pela ajuda :wink:

public List<Cliente> listRouter(Cliente cli){
     Stcling sql = "SELECT cli FROM Cliente cli WHERE ";
        
     try {
         List<Cliente> list = getHibernateTemplate().find(sql, cli);
         return list != null && !list.isEmpty() ? list : new ArrayList<Cliente>();
     } catch (Exception e) {
         e.pclintStackTrace(System.err);
         return new ArrayList();  
     }
}

6 Respostas

Luciano_Lopes

Primeiramente você tem que colocar dentro do seu sql a condição que você quer

select * from cliente where codigo=?

e não simplismente

select * from cliente where
R

Philipe, não sei que banco de dados você está usando, mas vou passar a minha experiência em banco dade dados Oracle… talvez ajude você a fazer algum comparativo caso não seja Oracle.

Opção 1)
where (parametro1 is null OR coluna1 = parametro1)
and (parametro2 is null OR coluna2 = parametro2)

Opção 2)
where coluna1 = nvl(parametro1, coluna1)
and coluna2 = nvl(parametro2, coluna2)

Opção 3)
Formar o where através de if’s

Deve ter mais opções.

Espero ter ajudado !!!

Hebert_Coelho

Luciano_Lopes:
Primeiramente você tem que colocar dentro do seu sql a condição que você quer

select * from cliente where codigo=?

Basta fazer o código acima.

Depois vc passa o parametro para dentro da query que vc criou atraves de algum método parecido com setParameter

P

Valeu mesmo pela ajuda, manos! :wink:

Porém, um amigou meu me mostrou um esquema chamado “Criterion”… apelão isso hein rs
Se quiserem eu coloco a DAO e a Bean pra vocês verem depois.

Até logo!

doravan
PhilipeZ:
Bom dia, pessoal. Sou novo no Java(bem novo) e travei numa Query da minha DAO aqui :( O usuário pode preencher qualquer parâmetro para buscar, não há nenhum obrigatório (e são 10 params possíveis +-), o lance é o seguinte... como ficaria meu where se eu não sei o que ele preencheu? Deu pra entender, ou ficou confuso?rs O método tá ai em baixo pra vocês verem.

Desde já, muito obrigado pela ajuda :wink:

public List<Cliente> listRouter(Cliente cli){
     Stcling sql = "SELECT cli FROM Cliente cli WHERE ";
        
     try {
         List<Cliente> list = getHibernateTemplate().find(sql, cli);
         return list != null && !list.isEmpty() ? list : new ArrayList<Cliente>();
     } catch (Exception e) {
         e.pclintStackTrace(System.err);
         return new ArrayList();  
     }
}

Cara, evolua isso para um criterion. No criterion você pode definir o que entra ou não no seu where de forma mais legível.

Hebert_Coelho

Não seria Criteria? Nunca ouvi falar de Criterion não… O.o

Criado 28 de outubro de 2011
Ultima resposta 28 de out. de 2011
Respostas 6
Participantes 5