본문 바로가기

Dev. Debug/프로그램

[MyBatis] Mapped Statements collection does not contain value for

마찬가지로 페이징 처리 구현 중, 다음과 같은 에러를 만났다.


nested exception is org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for org.zerock.mapper.BoardMapper.countPaging ### Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for org.zerock.mapper.BoardMapper.countPaging


가만보자, BoardMapper.countPaging 에 문제가 있다는 것 같은데...

모를 땐 구글링 고고 !!


ERROR MESSAGE
Mapped Statements collection does not contain value for ~

CASE
1. mapper id가 틀린 경우
2. Parameter와 bean의 field명이  틀린 경우
3. sql.xml에서 정의된 namespace와 DAO에서 호출하는 namespace가 다를 경우
4. mapper가 정의가 되어 있지 않거나 Spelling이 틀린 경우
5. mapper에 정의된 namespace 명칭이 같은 Application 내에 중복 될 경우

검색해 보니 이 에러는 5가지 케이스로 분류된다고 한다. 

대충 읽어보니, "당신의 소스에 오타가 있습니다!" 라고 정리되는 듯 하다.

Mapper 파일로 가보니 역시나 오타가 있었다 ㅡㅡㅋ

Persistence(DAO)에서는 countPaging을 열심히 호출하고 있는데, Mapper에는 

coutPaging라고 적어놨으니 오류가 날 수 밖에 없었다.