Recuperar e exibir registros do banco de dados

7 respostas
E

Boa tarde pessoal,

Criei uma classeDAO com a query contendo as informações que desejo buscar no BD e exibir na tela, da seguinte forma:

public List<Colaborador> recuperaColaborador(){ Session sess = PlcHibernateManagerLocator.getInstance().getHibernateManagerClasse("default").getSession(); return sess.createQuery(" select obj.id, obj.nome from ColaboradorEntity obj") .list(); }
Na minha classe Action eu preciso chamar a função List recuperaColaborador() e listar os resultados, mas não sei fazer isso.

Alguém pode me ajudar.

Obrigado.

7 Respostas

finotti

basicamente, vc deve criar uma instancia da sua classe DAO e depois acessar o método que vc quer.

MinhaClasseDAO dao = new MinhaClasseDAO(); List<Colaborador> listaColaboradores = dao.recuperaColaborador();

depois de recuperar a lista de colaboradores, vc faz um loop para exibir o resultado.
dica: estude o padrão de projeto MVC

E

Eu até já tinha instanciado, usando facade.
A minha dúvida é justamente no loop.
Com qual função eu passo o nome do campo que eu quero recuperar a informação.

O meu código da classe Action está assim:

IAppFacade facadeImpl = (IAppFacade)this.getServiceFacade(IAppFacade.class);
List listaColaborador = facadeImpl.recuperaColaborador();

Como eu faço o laço FOR?
Como eu faço de 0 até último registro?
Pode exemplificar por favor.

Obrigado pela atenção.

finotti

existem várias formas de se fazer loop em java.
vou tentar exemplificar com a mais clara que eu acho, utilizando um Iterator.

supondo que sua listaColaboradores é formada por objetos ‘Colaborador’

for(Iterator it = listaColaboradores.iterator(); it.hasNext();) { // a cada volta do loop é carregado um objeto 'Colaborador' Colaborador colaborador = (Colaborador)it.next(); String nomeDoColaborador = colaborador.getNome(); System.out.println("Nome do colaborador=" + nomeDoColaborador); }

exemplos de loop em java
http://www.j2eebrasil.com.br/mostrar/7

E

Como eu faço conseguir recuperar o NOME e colocar no local onde está a variável i?

IAppFacade facadeImpl = (IAppFacade)this.getServiceFacade(IAppFacade.class);
List listaColaborador = facadeImpl.recuperaColaborador();

String mensagem = "Registros:
";

for(int i=0; i<listaColaborador.size(); i++){

mensagem = mensagem + i + “
”;

}

Obrigado.

finotti

vc tentou fazer da forma que exemplifiquei acima??

tenta assim entao:

for(int i=0; i<listaColaborador.size(); i++){ Colaborador colaborador = (Colaborador)listaColaborador.get(i); String nome = colaborador.getNome(); mensagem = mensagem + nome + ";<br>"; }

E

Dessa forma deu erro "cannot cast" em String nome = (String)listaColaborador.get(i); :

String mensagem = "Registros: <br>";
		
		ColaboradorDAO dao = new ColaboradorDAO();   
		List<Colaborador> listaColaborador = dao.recuperaColaborador();  
		
		for(int i=0; i<listaColaborador.size(); i++){   
			String nome = (String)listaColaborador.get(i);   
			mensagem = mensagem + nome + "<br>";   
			}

E dessa forma:

String mensagem = "Registros: <br>";
		
		ColaboradorDAO dao = new ColaboradorDAO();   
		List<Colaborador> listaColaborador = dao.recuperaColaborador();  
		
		for(Iterator it = listaColaborador.iterator(); it.hasNext();) {   
			   // a cada volta do loop é carregado um objeto 'Colaborador'   
			   Colaborador colaborador = (Colaborador)it.next();   
			   String nomeDoColaborador = colaborador.getNome();   
			   mensagem = mensagem + nomeDoColaborador + "<br>";
			}
dá esse erro: ERROR [PlcExceptionHandlerService] Usuario corrente: admin Erro: Erro inesperado. Comunique ao Analista responsável.
Mensagem do Sistema: [Ljava.lang.Object; 15:53:30,995 [http-8080-4] java.lang.ClassCastException: [Ljava.lang.Object;
E

A minha Action ficou dessa maneira, mas está dando o seguinte erro "java.lang.ClassCastException: [Ljava.lang.Object" na linha "Colaborador colaborador = (Colaborador)it.next();"

public class ColaboradorAction extends AppAction  {

	@Override
	protected boolean gravaSimplesAntes() throws PlcException {
		try {
			IAppFacade facadeImpl = (IAppFacade)this.getServiceFacade(IAppFacade.class);
			List<Colaborador> listaColaborador = facadeImpl.recuperaColaborador();
			String mensagem = "Registros: <br>";
			
			for(Iterator it = listaColaborador.iterator(); it.hasNext();) {   
				   Colaborador colaborador = (Colaborador)it.next();   
				   String nomeDoColaborador = (String)colaborador.getNome();   
				   mensagem = mensagem + nomeDoColaborador;   
				}  

		    PlcMailMessage email = new PlcMailMessage();
			email.setFromAddress("[email removido]");
			email.setToAddress("[email removido]");
			email.setToCcAddress("[email removido]");
			email.setToBccAddress("[email removido]");
			email.setSubject("Assunto do email");
			email.setBody(mensagem);
			email.setMimeType(PlcMailMessage.CONTEUDO_HTML);
			PlcMailSender.getInstance().sendMail("mail.teste.com.br", email);
			
		} catch (Exception e) {
			helperMsgPlc.msgErro("Erro: " + e, new Object[] {}, contextHelperPlc.getRequest());
		}
		return super.gravaSimplesAntes();
	}

}
Criado 27 de outubro de 2008
Ultima resposta 27 de out. de 2008
Respostas 7
Participantes 2