Listar Baseado no Exemplo
Sobre
O método listarBaseadoNoExemplo(...)
é um método utilitário que simplifica a pesquisa de entidades (VO) persistidas no banco.
É acessível de qualquer camada, seja CTR
, RN
ou DAO
. Consiste em receber dois objetos de exemplo que irão servir de criteria na pesquisa a ser efetuada no banco, retornando assim uma lista de objetos que são semelhantes (que possuem propriedades iguais às que foram setadas nos objetos de exemplo).
Nos permite também definir os campos/propriedades que vão ser recuperados e setados nos objetos retornados, assim como fazemos numa query nativa.
Funcionamento
Para a seguinte Entidade
mapeada que ira representar registros de um carro.
@Entity
public class CarroVO extends MeuBaseVO {
private String modelo;
private CorEnum cor;
private Integer ano;
private MarcaVO marca;
//Getters e Setters e Anotaçoes ocultados para brevidade do exemplo
}
E para os seguintes registros já cadastrados no banco.
id
modelo
cor
ano
marca_id (FK)
1
Uno
PRETO
2011
1 (Fiat)
2
Ka
BRANCO
2015
2 (Ford)
3
Siena
PRATA
2012
1 (Fiat)
4
Gol
PRETO
2011
3 (Volks)
Exemplos de pesquisar possíveis utilizando o listarBaseadoNoExemplo(...)
:
Nota: abreviaremos o nome do método para lbne(...)
para brevidade do exemplo.
1. Consultar todos os carros de cor "PRETO"
CarroVO exemplo = new CarroVO();
exemplo.setCor(CorEnum.PRETO);
Set<CarroVO> resultado = lbne(exemplo, null, 0, Integer.MAX_VALUE, "id", "modelo");
//Retorna ["Uno", "Gol"]
2. Consultar todos os carros entre o ano 2012 e 2015
CarroVO exemplo1 = new CarroVO();
CarroVO exemplo2 = new CarroVO();
exemplo1.setAno(2012);
exemplo2.setAno(2015);
Set<CarroVO> resultado = lbne(exemplo1, exemplo2, 0, Integer.MAX_VALUE, "id", "modelo");
//Retorna ["Ka", "Siena"]
3. Consultar carros que possuem a letra "n" no nome do modelo
String letraSolicitada = "n";
CarroVO exemplo = new CarroVO();
exemplo.setModelo("%" + letraSolicitada + "%");
Set<CarroVO> resultado = lbne(exemplo, null, 0, Integer.MAX_VALUE, "id", "modelo");
//Retorna ["Uno", "Siena"]
Last updated