Select com combinações vindas do formulário - Alguém pode me ajudar?

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;

}