如何将 ResultSet 转换为 DTO ArrayList

How to turn a ResultSet into a DTO ArrayList

我有一个来自数据库的结果集,其中每行包含 6 列。

对我来说,每一行都是一个对象,每一列都是该对象的一个​​参数。

问题是,我正在尝试使用以下代码来完成:

while(rs.next() && i<25){
        aux.setIdVinilo(rs.getInt("id_vinilo"));
        aux.setTitulo(rs.getString("titulo"));
        aux.setAutor(rs.getString("autor"));
        aux.setGenero(rs.getString("genero"));
        aux.setFecha(rs.getInt("fecha"));
        aux.setDiscografica(rs.getString("discografica"));
        aux.setImagen(rs.getString("imagen"));

        historial.add(aux);
        i++;
    } 

rs 是 ResultSet,historial 是 ArrayList,aux 是我的 DTO,由显示的字段组成。

问题是它最终用相同的信息填充 ArrayList 25 次。所以我猜 rs.next() 在每次迭代后不会向前移动一行。我该如何实现?

问题是你一次又一次地设置同一个对象 您需要在循环内创建一个新对象

while(rs.next() && i<25){                    
        DTO aux=new DTO();// create aux object here

        aux.setIdVinilo(rs.getInt("id_vinilo"));
        aux.setTitulo(rs.getString("titulo"));
        aux.setAutor(rs.getString("autor"));
        aux.setGenero(rs.getString("genero"));
        aux.setFecha(rs.getInt("fecha"));
        aux.setDiscografica(rs.getString("discografica"));
        aux.setImagen(rs.getString("imagen"));

        historial.add(aux);
        i++;
} 

在 while 循环中创建 DTO 对象