Javaでシステムを構築しています。
その際に疑問に思ったことがあります。
public List<MemberBean> selectMember(MemberBean member) throws SQLException, ClassNotFoundException {
List<MemberBean> memberList = new ArrayList<MemberBean>(); String sql = "SELECT * FROM m_member INNER JOIN m_area ON m_member.area_id = m_area.area_id WHERE age " + "BETWEEN ? AND ? AND hairstyle_id = ? AND m_member.area_id = ? AND delete_flag = 0"; try (Connection con = ConnectionManager.getConnection(); PreparedStatement pstmt = con.prepareStatement(sql)) { pstmt.setInt(1, member.getMinAge()); pstmt.setInt(2, member.getMaxAge()); pstmt.setInt(3, member.getHairStyleId()); pstmt.setInt(4, member.getAreaId()); ResultSet rs = pstmt.executeQuery(); while (rs.next()) { MemberBean memberB = new MemberBean(); memberB.setName(rs.getString("name")); memberB.setAge(rs.getInt("age")); memberB.setArea(rs.getString("area")); memberB.setPhoto(rs.getString("photo")); memberList.add(memberB); } } return memberList; }
こちらのwhile文直下のインスタンス生成について聞きたいです。
while内でbeanをインスタンス生成するとうまくいくのはわかります。
しかし、while文外でインスタンス生成するとテーブルの中に入っている最後の情報にすべてコピーされてしまいます。その理由とはどのようなものなのでしょうか。
(例)
MemberBean memberB = new MemberBean();
while (rs.next()) {
memberB.setName(rs.getString("name")); memberB.setAge(rs.getInt("age")); memberB.setArea(rs.getString("area")); memberB.setPhoto(rs.getString("photo")); memberList.add(memberB); }