Cícero Ednilson

Blog sobre Desenvolvimento de Softwares

Home » Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 8: Desenvolvendo consulta com PrimeFaces dataTable.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 8: Desenvolvendo consulta com PrimeFaces dataTable.

Nessa parte do nosso tutorial vamos criar uma página de consulta para visualizarmos os registros cadastrados no nosso banco de dados, na nossa página vamos usar um componente dataTable do PrimeFaces para renderizar os nossos registros na página.

Páginas do tutorial.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 1: Introdução.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 2: Criando o banco de dados.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 3: Criando o projeto com JSF no Maven.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 4: Criando o template com Facelets.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 5: Desenvolvendo a autenticação do sistema.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 6: Desenvolvendo cadastro de pessoa.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 7: Desenvolvendo cadastro via upload de arquivo XML.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 8: Desenvolvendo consulta com PrimeFaces dataTable.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 9: Formatando LocalDateTime.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 10: Editando um registro.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 11: Excluindo um registro.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 12: Consulta com Carousel PrimeFaces.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 13: Consulta com Gráfico PrimeFaces.

Criando uma aplicação Java com JSF, PrimeFaces, CDI e JPA – Parte 14: Exportando arquivo XML com fileDownload e Jdom.

Criando a Query de Consulta.

Primeiro vamos abrir a nossa entidade PessoaEntity e vamos adicionar os blocos de códigos destacados na imagem abaixo, o NamedQuery PessoaEntity.findAll vai retornar todos os registros cadastrados no nosso banco de dados.

Ou se preferir pode copiar o código completo da entidade que está abaixo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package br.com.ciceroednilson.repository.entity;
 
import java.time.LocalDateTime;
 
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
import javax.persistence.Table;
 
 
@Entity
@Table(name="tb_pessoa")
 
@NamedQueries({
 
	@NamedQuery(name = "PessoaEntity.findAll",query= "SELECT p FROM PessoaEntity p")
 
})
public class PessoaEntity {
 
	@Id
	@GeneratedValue
	@Column(name = "id_pessoa")
	private Integer 		codigo;
 
	@Column(name = "nm_pessoa")
	private String  		nome;
 
	@Column(name = "fl_sexo")
	private String  		sexo;
 
	@Column(name = "dt_cadastro")
	private LocalDateTime	dataCadastro;
 
	@Column(name = "ds_email")
	private String  		email;
 
	@Column(name = "ds_endereco")
	private String  		endereco;
 
	@Column(name = "fl_origemCadastro")
	private String  		origemCadastro;
 
	@OneToOne
	@JoinColumn(name="id_usuario_cadastro")
	private UsuarioEntity	usuarioEntity;
 
	public Integer getCodigo() {
		return codigo;
	}
	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getSexo() {
		return sexo;
	}
	public void setSexo(String sexo) {
		this.sexo = sexo;
	}
	public LocalDateTime getDataCadastro() {
		return dataCadastro;
	}
	public void setDataCadastro(LocalDateTime dataCadastro) {
		this.dataCadastro = dataCadastro;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getEndereco() {
		return endereco;
	}
	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}
	public String getOrigemCadastro() {
		return origemCadastro;
	}
	public void setOrigemCadastro(String origemCadastro) {
		this.origemCadastro = origemCadastro;
	}
	public UsuarioEntity getUsuarioEntity() {
		return usuarioEntity;
	}
	public void setUsuarioEntity(UsuarioEntity usuarioEntity) {
		this.usuarioEntity = usuarioEntity;
	}
 
}

Criando método de consulta.

Vamos abrir a classe PessoaRepository e vamos adicionar o método GetPessoas como mostra o código abaixo na linha 53.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package br.com.ciceroednilson.repository;
 
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
 
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.Query;
 
import br.com.ciceroednilson.model.PessoaModel;
import br.com.ciceroednilson.model.UsuarioModel;
import br.com.ciceroednilson.repository.entity.PessoaEntity;
import br.com.ciceroednilson.repository.entity.UsuarioEntity;
import br.com.ciceroednilson.uteis.Uteis;
 
public class PessoaRepository {
 
	@Inject
	PessoaEntity pessoaEntity;
 
	EntityManager entityManager;
 
	/***
	 * MÉTODO RESPONSÁVEL POR SALVAR UMA NOVA PESSOA
	 * @param pessoaModel
	 */
	public void SalvarNovoRegistro(PessoaModel pessoaModel){
 
		entityManager =  Uteis.JpaEntityManager();
 
		pessoaEntity = new PessoaEntity();
		pessoaEntity.setDataCadastro(LocalDateTime.now());
		pessoaEntity.setEmail(pessoaModel.getEmail());
		pessoaEntity.setEndereco(pessoaModel.getEndereco());
		pessoaEntity.setNome(pessoaModel.getNome());
		pessoaEntity.setOrigemCadastro(pessoaModel.getOrigemCadastro());
		pessoaEntity.setSexo(pessoaModel.getSexo());
 
		UsuarioEntity usuarioEntity = entityManager.find(UsuarioEntity.class, pessoaModel.getUsuarioModel().getCodigo()); 
 
		pessoaEntity.setUsuarioEntity(usuarioEntity);
 
		entityManager.persist(pessoaEntity);
 
	}
 
	/***
	 * MÉTODO PARA CONSULTAR A PESSOA
	 * @return
	 */
	public List<PessoaModel> GetPessoas(){
 
		List<PessoaModel> pessoasModel = new ArrayList<PessoaModel>();
 
		entityManager =  Uteis.JpaEntityManager();
 
		Query query = entityManager.createNamedQuery("PessoaEntity.findAll");
 
		@SuppressWarnings("unchecked")
		Collection<PessoaEntity> pessoasEntity = (Collection<PessoaEntity>)query.getResultList();
 
		PessoaModel pessoaModel = null;
 
		for (PessoaEntity pessoaEntity : pessoasEntity) {
 
			pessoaModel = new PessoaModel();
			pessoaModel.setCodigo(pessoaEntity.getCodigo());
			pessoaModel.setDataCadastro(pessoaEntity.getDataCadastro());
			pessoaModel.setEmail(pessoaEntity.getEmail());
			pessoaModel.setEndereco(pessoaEntity.getEndereco());
			pessoaModel.setNome(pessoaEntity.getNome());
 
			if(pessoaEntity.getOrigemCadastro().equals("X"))
				pessoaModel.setOrigemCadastro("XML");
			else
				pessoaModel.setOrigemCadastro("INPUT");
 
 
			if(pessoaEntity.getSexo().equals("M"))
				pessoaModel.setSexo("Masculino");
			else
				pessoaModel.setSexo("Feminino");
 
			UsuarioEntity usuarioEntity =  pessoaEntity.getUsuarioEntity();			
 
			UsuarioModel usuarioModel = new UsuarioModel();
			usuarioModel.setUsuario(usuarioEntity.getUsuario());
 
			pessoaModel.setUsuarioModel(usuarioModel);
 
			pessoasModel.add(pessoaModel);
		}
 
		return pessoasModel;
 
	}
}

Criando o Controller para a consulta.

No pacote br.com.ciceroednilson.pessoa.controller vamos adicionar uma classe com o nome de
ConsultarPessoaController, depois vamos deixar nossa classe com o código abaixo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package br.com.ciceroednilson.pessoa.controller;
 
import java.io.Serializable;
import java.util.List;
 
import javax.annotation.PostConstruct;
import javax.enterprise.inject.Produces;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
 
import br.com.ciceroednilson.model.PessoaModel;
import br.com.ciceroednilson.repository.PessoaRepository;
 
@Named(value="consultarPessoaController")
@ViewScoped
public class ConsultarPessoaController implements Serializable {
 
	private static final long serialVersionUID = 1L;
 
	@Inject transient
	private PessoaModel pessoaModel;
 
	@Produces 
	private List<PessoaModel> pessoas;
 
	@Inject transient
	private PessoaRepository pessoaRepository;
 
	public List<PessoaModel> getPessoas() {
		return pessoas;
	}
	public void setPessoas(List<PessoaModel> pessoas) {
		this.pessoas = pessoas;
	}		
	public PessoaModel getPessoaModel() {
		return pessoaModel;
	}
	public void setPessoaModel(PessoaModel pessoaModel) {
		this.pessoaModel = pessoaModel;
	}
 
	/***
	 * CARREGA AS PESSOAS NA INICIALIZAÇÃO 
	 */
	@PostConstruct
	public void init(){
 
		//RETORNAR AS PESSOAS CADASTRADAS
		this.pessoas = pessoaRepository.GetPessoas();
	}
 
 
}

Criando página de consulta.

Na nossa pasta sistema vamos adicionar uma página com o nome de consultarPessoa.xhtml, depois vamos deixar nossa página com o código abaixo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
	xmlns:h="http://xmlns.jcp.org/jsf/html"
	xmlns:f="http://xmlns.jcp.org/jsf/core"
	xmlns:p="http://primefaces.org/ui">
 
<h:head>
</h:head>
 
<ui:composition template="/template/layoutBase.xhtml">
 
	<ui:define name="content">
 
		<h:form style="margin:auto;margin-left:2%;" id="form-consulta">
 
			<p:dataTable id="dataTable-registros"
						 var="pessoa" 
						 value="#{consultarPessoaController.pessoas}" 
						 rows="15"
						 paginator="true"
						 paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                         rowsPerPageTemplate="5,10,15"
                         style="width:98%;">
 
						 <p:column headerText="Código">
            				<h:outputText value="#{pessoa.codigo}" />
        				 </p:column>
 
        				 <p:column headerText="Nome">
            				<h:outputText value="#{pessoa.nome}" />
        				 </p:column>
 
        				 <p:column headerText="Sexo">
            				<h:outputText value="#{pessoa.sexo}" />
        				 </p:column>
 
        				 <p:column headerText="Cadastro">
            				<h:outputText value="#{pessoa.dataCadastro}">            					
 
            				</h:outputText>
        				 </p:column>
 
        				 <p:column headerText="Email" style="width:200px;">
            				<h:outputText value="#{pessoa.email}" />
        				 </p:column>
 
        				 <p:column headerText="Endereço" style="width:200px;">
            				<h:outputText value="#{pessoa.endereco}" />
        				 </p:column>
 
        				 <p:column headerText="Origem">
            				<h:outputText value="#{pessoa.origemCadastro}" />
        				 </p:column>
 
        				 <p:column headerText="Usuário">
            				<h:outputText value="#{pessoa.usuarioModel.usuario}" />
        				 </p:column>
 
        				 <p:column headerText="" style="width:25px;">
 
        				 </p:column>
 
        				 <p:column headerText="" style="width:25px;">
 
        				 </p:column>
 
			</p:dataTable>
 
		</h:form>
 
	</ui:define>
 
</ui:composition>
</html>

Agora vamos abrir o arquivo header.xhtml e vamos adicionar a nossa página ao menu Consulta como mostra a imagem abaixo.

Agora vamos fazer o deploy da nossa aplicação e depois vamos acessar o menu Consulta, e então vamos ver nossa página como mostra a imagem abaixo.

Podemos ver na imagem acima que a data não está formatada, na próxima parte do nosso tutorial vamos aprender como formatar a data de cadastro que é do tipo LocalDateTime, até a próxima.

Comentários

Name of author

Name: ciceroednilson@gmail.com

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *