[SpringBoot] one result (or null) to be returned by selectOne(), but found: 5

지영·2023년 1월 14일
0

SpringBoot

목록 보기
2/10

오류

Expected one result (or null) to be returned by selectOne(), but found: 5

Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 5] with root cause

상황


게시글 목록을 불러들이는 boardList.do를 요청했는데
위와 같은 오류가 난다

+관련코드

boardMapper.java

boardMapper.xml

boardVO

해결

어디서부터 잘못된걸까 확인해보자!!!

값이 controller까지 잘 왔는지 콘솔창에 찍어보자


우선 콘솔창에 vo가 하나도 안뜬 것을 봐서는
mapper의 boardList()에서 잘못된 것 같다

숫자 5의 의미

SELECT * FROM board;


board 테이블에 들어있는 값들을 확인하는 쿼리문을 실행하면
값이 5개가 들어있다는 것을 알 수 있다
그렇담 여기서 숫자5의 의미가 board테이블의 row를 의미함을 알 수 있다!!!

다시 생각해보는 오류의 의미


결과가 하나의 행만 나오게 쿼리문을 짰는데
쿼리문 실행시켰더니 5개의 행이 나와서 오류가 난다는 것 같다

알 것 같다....

나는 db내 게시판 테이블에 있는 모든 데이터를 불러오는 게 목적이라
n개의 행이 나와도 다 값을 받아오고 싶은 건데
지금 내 쿼리문은 한 행만 받고있고!!!!!!!!!
몇 개의 행이 나오든 다 받아야한다!!!!
=> 그렇다면 n개의 행을 하나로 묶어서 받아오는 건 어떨까?

-- 다시 한 번 코드를 살펴보자!!!--


xml은 패스

기존 boardList의 반환값은 boardVO였고
인터페이스에서 boardList가 실행되면 동적배열로 select한 값을 받아온다고 수정

동적 배열 내부

이때 내부를 보면 이렇게 생겼을 것이다~

(귀찮아서 인덱스 5,6은 생략함)

코드를 고쳤으니 실행시켜보자!!!


콘솔창에도 잘 뜨고 값이 잘 전달되는 걸 확인할 수 있다!

정리

one result (or null) to be returned by selectOne(), but found: 5
라는 오류가 나면 mapper쪽을 잘 확인해보자
특히 메소드의 리턴값!!!

profile
💌

0개의 댓글