Olá comunidade Alura, como estão?
Espero que bem!
Assistindo a aula, vi a implementação, criando uma variavel ultima, só para não repetir o tipo de categoria, mas tem uma clausula SQL chamada DISTINCT
pra trazer os que são diferentes apenas, e temos também o GROUP BY
que agrupa a coluna pelos semelhantes.
O meu código de listarComProdutos()
na CategoriaDAO
ficou assim:
public List<Categoria> listarComProdutos() throws SQLException {
List<Categoria> categorias = new ArrayList<Categoria>();
System.out.println("Executando listar categoria");
String sql = "SELECT C.ID, C.NOME, P.ID, P.NOME, P.DESCRICAO FROM CATEGORIA C INNER JOIN PRODUTO P ON C.ID = P.CATEGORIA_ID GROUP BY P.CATEGORIA_ID";
try(PreparedStatement pstm = connection.prepareStatement(sql)){
pstm.execute();
try(ResultSet rst = pstm.getResultSet()) {
while (rst.next()) {
Categoria categoria = new Categoria(rst.getInt(1), rst.getString(2));
categorias.add(categoria);
}
}
}
return categorias;
}
.
E a minha saida foi o nome das categorias uma únicas vez ao executar o TestaListagemDeCategorias
.
Vai ter alguma diferença eu manter meu código desta forma? Houve uma razão em especial para não usar as clausulas SQL?