Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

marceloavf3

List no Java

Recommended Posts

Bom pessoal, estou sem saídas aqui, e preciso de uma ajuda com uma parte de código Java...


O que tenho que fazer, é listar uma classe chamada Profissional,


Porém, para sua listagem, preciso adquirir os valores do banco de dados e setarem eles nas variáveis, abaixo um preview da classe Profissional.




public class Profissional extends Pessoa {
private Integer idProfissional;
private Double salarioProfissional;
private String agenciaProfissional;
private String contaCorrenteProfissional;
private Cargo cargo;




O problema está em setar os valores de cargo, onde está setado como um objeto, pois existe uma classe cargo com atributos ID_CARGO e NOME_CARGO


Abaixo um exemplo de como estou setando os valores:




public List<Object> listar() {
List<Object> resultado = new ArrayList<Object>();
PreparedStatement stmt = null;
ResultSet rs = null;

String sql="select pe.*, p.*, c.nome_cargo from pessoa pe, profissional p, cargo c where pe.id_pessoa = p.id_pessoa and p.id_cargo = c.id_cargo;";

try{
stmt=conn.prepareStatement(sql);
rs = stmt.executeQuery();
while(rs.next()){
Profissional profissional = new Profissional();
Cargo cargo = new Cargo();

profissional.setIdPessoa(rs.getInt("id_pessoa"));
profissional.setNomePessoa(rs.getString("nome_pessoa"));
profissional.setRgPessoa(rs.getString("rg_pessoa"));
profissional.setLoginPessoa(rs.getString("login_pessoa"));
profissional.setSenhaPessoa(rs.getString("senha_pessoa"));
profissional.setCpfPessoa(rs.getString("cpf_pessoa"));
profissional.setIdProfissional(rs.getInt("id_profissional"));
profissional.setSalarioProfissional(rs.getDouble("salario_profissional"));
profissional.setAgenciaProfissional(rs.getString("agencia_profissional"));
profissional.setContaCorrenteProfissional(rs.getString("contacorrente_profissional"));
profissional.setCargo(rs.getObject(columnIndex, null));



O problema está bem na ultima linha, tenho que setar o cargo, onde no SQL estou recebendo um ID_CARGO, para que possa indicar na hora da listagem do mesmo, mas como vou fazer isso?!


Primeiramente imaginei em chamar diretamente a classe Cargo, e colocar cargo.setIdCargo(rs.getInt("id_cargo");


Porém, já tem uma página onde se é listado o cargo, então fazer isso novamente, não setaria dois valores desnecessários ?!


E abaixo, um exemplo da página JSP que está Listando os cargos, tenho que fazer da mesma forma para o Profissional:




<body>

<div id="buttonContainer" align ="center">
<h1>Lista de Cargos</h1>
<table align="center" border="1">
<thead>
<tr>
<th>ID</th>
<th>Cargo</th>
</tr>
</thead>
<tbody>
<% List<Cargo> cargos=(List<Cargo>)
request.getAttribute("cargos");
for (Cargo cargo : cargos){
%>
<tr>
<td><%= cargo.getIdCargo() %></td>
<td><%= cargo.getNomeCargo() %></td>
<td><a href="ExcluirCargo?idcargo=<%= cargo.getIdCargo()%>">Excluir</a></td>
<td><a href="CarregarCargo?idcargo=<%= cargo.getIdCargo()%>">Alterar</a></td>
</tr>
<%} %>
</tbody>
</div>
</body>




O problema é, como vou setar o id_cargo que chega do SQL, ou necessariamente não precisarei fazer isso?!



Desde já muito obrigado,


Atenciosamente,

Marcelo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O set_id não tem problema. Toda vez que sua tabela for atualizada, ela pedirá uma novo List do banco, substituindo a antiga.

Porém, você precisaria pegar todos os outros dados referentes a cargo. Você pode fazer o seguinte:

Cria um metódo que pega um Cargo usando o ID. Sugiro o nome procuraPorID.

Então, no lugar daquela última linha, você usa isso: profissional.setCargo(cargoDAO.procuraPorID(rs.getInt("ID_Cargo"))).

Espero ter ajudado.

 

Obs.:DAO = Data Acess Object = Objeto de acesso a dados = a classe que você usa para puxar informações do banco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.