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:
publicList<Cliente>listRouter(Clientecli){Stclingsql="SELECT cli FROM Cliente cli WHERE ";try{List<Cliente>list=getHibernateTemplate().find(sql,cli);returnlist!=null&&!list.isEmpty()?list:newArrayList<Cliente>();}catch(Exceptione){e.pclintStackTrace(System.err);returnnewArrayList();}}
Primeiramente você tem que colocar dentro do seu sql a condição que você quer
select*fromclientewherecodigo=?
e não simplismente
select*fromclientewhere
R
rcerullo
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*fromclientewherecodigo=?
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
PhilipeZ
Valeu mesmo pela ajuda, manos!
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:
publicList<Cliente>listRouter(Clientecli){Stclingsql="SELECT cli FROM Cliente cli WHERE ";try{List<Cliente>list=getHibernateTemplate().find(sql,cli);returnlist!=null&&!list.isEmpty()?list:newArrayList<Cliente>();}catch(Exceptione){e.pclintStackTrace(System.err);returnnewArrayList();}}
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