멤버 전체조회 코드를 짜고 테스트했는데
IncorrectResultSetColumnCountException 예외가 터졌다
예외에서 코드 따라가보니
public List<Member> findAll() {
String sql = "select * from member";
List<Member> members = template.queryForList(sql, Member.class);
return members;
}
여기서 문제가 발생했다.
queryForList 메서드를 추적해서 가져왔다
@Override
public <T> List<T> queryForList(String sql, Class<T> elementType) throws DataAccessException {
return query(sql, getSingleColumnRowMapper(elementType));
}
즉 getSingleColumnRowMapper
한가지의 컬럼만 받아올 수 있다는 것이다.
내가 작성한 것은 모든 컬럼을 가져오는 것이었고 Member 테이블의 컬럼은 id, money 즉 2가지라서 actual 2가 뜬 것 같다.
queryForList 를 사용하지 말고
query메서드로 RowMapper 람다식을 사용해서 조회하자
public List<Member> findAll() {
String sql = "select * from member";
List<Member> members = template.query(sql, (rs, rowNum) -> {
Member member = new Member();
member.setMemberId(rs.getString("member_id"));
member.setMoney(rs.getInt("money"));
return member;
});
return members;
}