본문 바로가기

스프링 프레임워크로 CRUD 게시판 만들기/오류해결

Mapped Statements collection does not contain value for~

https://programmer93.tistory.com/25

 

Mapped Statements collection does not contain value for~ 에러 - 삽질중인 개발자

Mapped Statements collection does not contain value for ~ 에러 발생시 확인해야 하는 부분 [다음 에러가 나왔을 시 체크해봐야 하는 부분] 1. mapper id가 다를경우 - 대부분 이경우  - mapper파일에  - ex..

programmer93.tistory.com

https://blog.naver.com/javaking75/220315971085

 

[에러] 마이바티스 에러 Mapped Statements collection does not contain value for​ ~

에러 : java.lang.IllegalArgumentException: Mapped Statements collection does not contain value ...

blog.naver.com

 

1. mapper id가 다를경우 - 대부분 이경우

   - mapper파일에 <select id=''.. 에 id 과 DAO 파일의 매퍼 아이디가 다른경우 

   - ex ) <select id="getUserInfo"       와  sqlSessionTemplate.selectOne("userMapper.getUser",userSeq);

2. mapper에 정의된 namespace 중복될 경우

   - mapper.xml 파일의 <mapper namespace="userMapper"> 가 중복되는지 체크

3. mapper location 세팅 확인 - 경로가 잘 잡혔는지. (프로젝트 처음 세팅을 했는데 안되는 경우 이 부분 확인)

   - classpath*:static/mappers/**/*Mapper.xml 이부분   (*가 없는 경우 *를 추가)

4. Parameter와 bean의 필드명이 틀린 경우

 

나의 경우는 3번 + 나의 멍청한 짓으로 이루어진 오류였다...

코드를 이해하지 않은 채로 그대로 따라치거나 복붙만 하면 이런 에러가 발생하기 쉬울 것 같다.

 

root-context.xml

먼저 <property value="/resources/mappers/*Mapper.xml" 이 부분에서 나의 매퍼는 boardMapper.xml이였지만 그대로 복붙하는 바람에 Mapper.xml로 그대로 쳐버렸다.

이 부분은 이런식으로 수정해주면 된다. (꼭 체크해보길)

 

그리고 또 하나.

매퍼를 못찾아서 어? 왜 없지? 하고 src/test/resources에 매퍼를 만들고 거기에 모든걸 작성했다.....ㅠㅠㅠ

실제 매퍼는 이렇게 src/main 부분에 따로 있다ㅠㅠㅠ 이런 멍청 한 실수는 하지 않길ㅠㅠㅠ

실제 작동되고 있던 매퍼에 가보니 이렇게 select절에는 아무것도 안 써지고 네임스페이스 이름도 엉망인채로 있어서 다시 수정해주고 실행했더니 잘 됐다ㅠㅠㅠㅠㅠ