Como fazer busca combinada

6 respostas
C

Olá pessoal! Estou com uma dúvida em como fazer uma busca combinada. Tenho uma página jsp com 3 campos e preciso combiná-los para realizar busca no banco de dados. Ora quero pesquisar somente pelo primeiro campo, ora somente pelo segundo, ora pelos 3… Alguém tem uma idéia de como realizar essa busca sem ter que montar várias queries para cada situação? Estou utilizando o container EJB3 para comunicação com o banco (sql).

6 Respostas

lmprates

quais os tipos de dados desses tres campos que você quer pesquisar?

S

ixi, montando soh uma query !!! acho que não tem como,
mais utilixa contrutores sobrecarregados, cria uma intancia da string do select, com isso vc terá somente uma consulta, mais a String diferente…
ex:

public Class Demo{
 
 private String sql;

 public Demo(String valor1){
  this.sql = "SELECT * FROM aluno WHERE cod = "+valor1;
 }

 //CRie mais 2 contrutores montando sua sql, 
//Obs: utilize StringBuffer

public Aluno obtenhaAluno(){

 connection.prepa..(this.sql);


//assim vc garante apenas uma consulta....
}

}

:slight_smile:

Guto_Magalhaes

Se vc nao se importar em nao utilizar jsp, ha um framework muito bom pra isso, o ojb Ha uma ferramenta muito boa pra seu problema, pois ele monta o sql de acordo com os parametros a ele passados

Um exemplo

public Collection consulta(Integer id, String nome, String sobrenome)

{

Criteria criteria = new Criteria()
if(id != null && id != 0)
   {
       Criteria criteria1 = new Criteria()
       criteria1.addEqualto(NomeDaClasseQueRepresentaEntidade.id, id);
       criteria.addAndCriteria(criteria1)
   }

   if(nome != null && !nome.equals(""))
   {
       Criteria criteria2 = new Criteria()
       criteria2.addEqualto(NomeDaClasseQueRepresentaEntidade.nome, nome);
       criteria.addAndCriteria(criteria2)
   }

   if(sobrenome != null && sobrenome != 0)
   {
       Criteria criteria3 = new Criteria()
       criteria3.addEqualto(NomeDaClasseQueRepresentaEntidade.sobrenome, sobrenome);
       criteria.addAndCriteria(criteria3)
   }

   if((id != null && id != 0) && (nome != null && !nome.equals("")) && sobrenome != null && !sobrenome.equals(""))
{

Query query = new QueryByCriteria(NomeDaClasseQueRepresentaEntidade.class, criteria);

}

else

{

QueryByCriteria(NomeDaClasseQueRepresentaEntidade.class, null);

O unico problema de ojb é o mapeamento.

C

Olá.
Os tipos são: Long, Integer e String.
Daniel, como concatenar os resultados do valor1 com o valor3 por exemplo? Gostaria de realizar a busca sem repetir queries e também sem ter que verificar se cada campo está preenchido. Tem alguma maneira de fazer isso?
Acredito que a minha situação está mais parecida com a do Guto, porém não utilizo o framework que ele indicou…

Pedrosa

Ops postei errado.

Guto_Magalhaes

Bem pessoal, quem tiver interesse ou curiosidade sobre o ojb, o lin ta abaixo

http://db.apache.org/ojb/

Falow 8)

Criado 3 de julho de 2007
Ultima resposta 5 de jul. de 2007
Respostas 6
Participantes 5