티스토리 뷰

 

 

 

아래의 오류 페이지를 보아 기존 변경하기 전 코드에서 오류가 발생했다는 것을 확인할 수 있었다.

오류는 쿼리문에서 발생했다는 오류 코드를 볼 수 있었다.

 

 

 

 

확인 결과 아래와 같이 작성되어 있었다.

이전 수정하기 전에는 where절이 없이 테이블의 모든 컬럼 값들을 조회하는 쿼리문이었기 때문에 query를 사용했다.

하지만 목적이 바뀌어 where 절을 추가하였다.

where 절이 추가되면 where절에서 필요한 파라미터를 전달해야하는데 아래를 보면 파라미터를 전달하지 않고 있는 것을 볼 수 있다.

 

@Override
public List<LessonReview> readAllReviewList(String lessonId) {

    String SQL = "SELECT * FROM l_review WHERE lessonId=?";
    List<LessonReview> listOfReviews = template.query(SQL, new LessonReviewRowMapper());

    return listOfReviews;
}

 

 

 

 

이러한 문제점을 파악한 후 파라미터를 전달하도록 변경하였지만

아래와 같이 에러 표시가 나타났다.

 

 

 

 

이러한 문제가 나타난 이유는 template.queryForObject() 메서드 때문이다.

template.queryForObject() 메서드는 단일행을 조회하는데 사용되는 메서드이다.

우리의 목적으로 보아 List 타입이므로 여러 행을 조회하는데 이러한 경우 template.query() 메서드를 사용해야한다.

 

 

 

 

 

 

 

 

위의 문제들을 참고하여 코드를 아래와 같이 수정했다.

 

@Override
public List<LessonReview> readAllReviewList(String lessonId) {

    String SQL = "SELECT * FROM l_review WHERE lessonid=?";
    List<LessonReview> listOfReviews = template.query(SQL, new Object[] {lessonId}, new LessonReviewRowMapper());

    return listOfReviews;
}

 

 

수정한 코드를 실행한 결과 올바른 결과를 출력하는 것을 볼 수 있다.

 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday