hoon's bLog

Mybatis ERROR | Error :  java.lang.IllegalArgumentException : Mapped Statements collection does not contain value for​ ~ 본문

IT/Error

Mybatis ERROR | Error :  java.lang.IllegalArgumentException : Mapped Statements collection does not contain value for​ ~

개발한기발자 2024. 1. 22. 10:54
반응형

Error 발생 경로

Spring에서 myBatis를 연동하면서 가장 많이 접하게 되는 error를 가져와 봤다.

(는 또 반복되는 실수... error 전문 개발자....)

Error :  java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for ~

우선 직역하자면 매핑된 컬렉션 구문들에 값이 존재하지 않는다는 것!!!!!

생각보다 이 에러가 많이 등장하는데,

과연 어떻게 해결해야할까?!!

해결

mapper id Check!

  • 쿼리문을 모아두는 xml파일인 mapper에서 <select id='userName'></select>
  • 'userName'이 호출되는 DAO(Data Acess Object)와 같은 java파일에서 값이 같아야 하는데, 다르면 에러가 발생!!!

Parameter와 bean의 필드명 확인할 것!!

 

mapper 파일 namespace 가 다를 경우

  • DAO에서 해당 쿼리문을 호출할 때 namespace와 id를 통해 호출
  • namespace로 mapper 전체를 찾고 id를 통해 그 안에서 요청한 쿼리를 찾는데 반드시 mapper 파일과 namespace가 일치하는지 확인할 것!!!!
  • mapper 파일과 namespace가 중복될 경우도 문제 발생하니 주의할 것!!

MyBatis config 파일에 정의가 되어 있지 않거나 스펠링이 틀린 경우

MyBatis 설정파일로써 config dtd를 입력하고 밑에 <configuration> </configuration> 태그를 만들어 주지 않으면 에러가 발생

반드시 비어있는 태그라도 만들어줄 것!!!

기존에 우리가 사용하는 mapper
마지막에 언급한 Mybatis 설정 configuration

결론

mybatis 문법 같은 경우 우리가 시간 내서 공부할 일이 없기 때문에,위와 같이 에러가 발생할 경우, 그때마다 정리하고 내 것으로 만드는 게 참 중요한 것 같다.실수를 넘기지 말고, 꾸준히 기록하자!!!

 

 

언제나 새로운 정보 공유와 잘못된 정보

비판/지적/태클은 환영입니다!

도움이 되셨다면 공감♥️, 댓글 부탁드려요:)

끝.

728x90
반응형