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).
Como fazer busca combinada
6 Respostas
quais os tipos de dados desses tres campos que você quer pesquisar?
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....
}
}

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.
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…
Ops postei errado.
Bem pessoal, quem tiver interesse ou curiosidade sobre o ojb, o lin ta abaixo
Falow 8)