public ArrayList<DTO> select(DTO dto) {
ResultSet rs = null;
ArrayList<DTO> list = new ArrayList<DTO>();
String query = "select * from test_str";
try {
PreparedStatement pstmt = conn.prepareStatement(query);
rs = pstmt.executeQuery();
while (rs.next()) {
dto.setId(rs.getInt("id"));
dto.setStr(rs.getString("str"));
dto.setStr2(rs.getString("str2"));
list.add(dto);
System.out.println("dto.getStr() : " + dto.getStr());
System.out.println("dto.getStr2() : " + dto.getStr2());
System.out.println("dto.getId() : " + dto.getId());
System.out.println();
}
} catch (SQLException e) {
System.out.println("SQL exception(select ()) : " + e.getMessage());
}
System.out.println("list.get(0).getStr2() : " + list.get(0).getStr2());
return list;
}
이렇게 하면 while문 안에서는 각 객체마다의 값이 잘나오는데
리턴 바로 위에 줄에서는 마지막객체의 값만 나와요 어디가 잘못된걸까요?
get(0)해놓고 하나만 나온다고 그러네
배열에 들어있는 객체중 첫번째 객체에서 가져오는건데 값은 마지막 객체의 값이 나와여
눈뽕 씨발
으악!
왜 마지막이 나오지? 노이해네 ㄷ
악! 눈폭력 멈춰!
아 이해했다
get이 아니라 set으로 하니까 마지막값 나오지
뭔 개소리냐
아닌가? 그냥 for문으로 다 출력해봐
다시보니 니말이 맞는듯
마지막이 나올리가 없음 실행 결과 캡처해서 올려
아 진짜 5분정도 꼬라보고 이해했다 ㅅㄱ 덕분에 공부 잘하고간다
와일문마다 new DTO해야하는데 그냥 파라미터 주소가르키고 그걸 set하니까 마지막 값이 dto에 들어가고 list는 같은 dto주소만 들어가는거 ㅇㅇ
ㄹㅇ ㅋ
list.add할때 새로 생성 및 복사하는게 아닌가보네. 프갤 상위 1% - dc App