如何将 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 对象
我有一个来自数据库的结果集,其中每行包含 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 对象