I have a JSP page and I want it to be a list. To do this, I created a listarTodos()
method inside the DAO class and set the fields to show the data of the object, thus getting the code:
</div>
<%
ProdutoDAO produtoDAO = new ProdutoDAO();
List<Produto> produtos = produtoDAO.listarTodos();
%>
<table class="table table-striped table-inverse">
<thead>
<tr>
<th>Código</th>
<th>Produto</th>
<th>Tipo de Produto</th>
<th>Quantidade</th>
<th>Preço em R$</th>
<th>Tipo de Negociação</th>
</tr>
</thead>
<tbody>
<%for(Produto produto : produtos){ %>
<tr>
<td><%=produto.getIdProduto()%></td>
<td><%=produto.getNomeProduto()%></td>
<td><%=produto.getTipoProduto()%></td>
<td><%=produto.getQtdProduto()%></td>
<td><%=produto.getPreco()%></td>
<td><%=produto.getTipoNegociacao()%></td>
<td>Editar</td>
<td><a href="prodcontroller.do?acao=excluir&input_codigo=<%=produto.getIdProduto()%>">Excluir</a></td>
</tr>
<%} %>
</tbody>
</table>
</div>
The problem is that it is listing the right number of records, but it is populating all "product" objects with just one bank line. So, if I have N records there, those N records would populate the object with the same data.
Example: id: 123; product: banana: type: fruit; qnt: 6; price = 1.0; type of negotiation: sale. < ~~~~ this In the 14 objects created.
Follow the method code:
public List<Produto> listarTodos() {
ConexaoBD conexao = new ConexaoBD();
conexao.conecta();
List<Produto> produtos = new ArrayList<>();
Produto produto = new Produto();
try {
Statement st = conexao.conn.createStatement();
ResultSet rs = st.executeQuery(LISTAR_TUDO);
while(rs.next()) {
produto.setIdProduto(rs.getInt("id_produto"));
produto.setNomeProduto(rs.getString("ds_tipo_produto"));
produto.setNomeProduto(rs.getString("nm_produto"));
produto.setQtdProduto(rs.getInt("nr_quantidade"));
produto.setPreco(rs.getDouble("vl_preco"));
produto.setTipoNegociacao(rs.getString("ds_tipo_negociacao"));
produtos.add(produto);
}
rs.close();
}
catch(SQLException ex) {
ex.printStackTrace();
}
return produtos;
}
Can you see where I'm going wrong?