Pessoal, tenho um formulário com 4 campos e preciso fazer um select que busque as informações no banco conforme as informações postados no formulário.
A pessoa pode fazer combinações no form.
ex:
campo1 = João
campo2 = "“
campo3=”"
campo4=Joinville
A busca tem que trazer os registros do joão da cidade joinville em um select somente sem usar “or”
Desde já agradeço
Marcos
cara nao entendi direito
select p from Pesssoa p where p.campo1 =:campo1 and p.camp2 =:campo2 … por ai vai
algo assim?
to boiando kkkk
Vitenho,
A pessoa pode escolher entre as opções no formulario de pesquisa e fazer combinações para a pesquisa.
Por exemplo:
Pode escolher os campos no form
campo1
campo4
ou
campo1
campo2
ou
campo1
campo3
ou
campo2
campo4
ou
campo2
campo3
e assim por diante
não quero encher de if o meu sistema, quero ter apenas um select que faça isso sem utilizar o “or”.
Vou exemplificar o pq não quero usar o “or”.
campo1 campo2 campo3 campo4
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
passado os parametros por “or” como assim:
(simulação onde o usuario selecionou os campos 2 e 3 do form)
SELECT *
FROM Tabela1
WHERE campo1 = "" or campo2 = "2" or campo3 = "3" or campo4 = ""
o resultado é
Campo1 Campo2 Campo3 Campo4
2 2 2 2
3 3 3 3
Não quero traga todos o resultados com valor “2” ou valor “3” quero que traga os valores onde no campo2 é “2” e no campo3 é “3”, mas não necessariamente o usuário vai selecionar sempre no form os campos 2 e 3, pode ser o 3 e 4, ou 1 e 3 ou 2 e 4 e assim por diante.
import java.util.List;
public class Bean {
void find() {
CampoValor cp1 = new CampoValor("campo1", "valor1");
CampoValor cp2 = new CampoValor("campo2", "valor2");
CampoValor cp3 = new CampoValor("campo3", "valor3");
CampoValor cp4 = new CampoValor("campo4", "valor4");
search(cp1, cp2, cp3, cp4);
}
public List<String> search(CampoValor... campos) {
if (campos == null || campos.length == 0)
return null;
StringBuilder budy = new StringBuilder("Select * from Tabela t WHERE ");
for (CampoValor campo : campos) {
if (campo.valorCampo != null)
budy.append(" t.").append(campo.nomeCampo).append(" = ").append(campo.valorCampo);
}
return executeSQL(budy.toString());
}
}
class CampoValor {
String nomeCampo;
String valorCampo;
}