Invalid bound statement (not found) 에러 처리


현재 프로젝트의 경로는 위와 같다.



기존의 내 코드는 이렇게 되어 있었다.
설정파일들을 아무리 수정해봐도, 자료를 찾아봐도 에러가 해결되지 않았다.
발생한 에러는 아래와 같다.


1
2
3
4
5
6
7
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
com.bny.dao.UserDao.getUser at
org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:235) at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:53) at
org.apache.ibatis.binding.MapperProxy.lambda$cachedMapperMethod$0(MapperProxy.java:62)
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(Unknown Source) at
org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:62)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:57)</init></init>

이 에러로 장작 4시간을 싸우고 있었던 것 같다.
온갖 방법들을 써가며 안되겠지 안되겠지 하는 찰나에…


1
2
3
4
5
6
7
8
9
10
11
정보: Mapped URL path [/fonts/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#1' 4월 09, 2019 6:02:20 오후 
org.springframework.web.servlet.handler.SimpleUrlHandlerMapping registerHandler
정보: Mapped URL path [/images/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#2' 4월 09, 2019 6:02:20 오후
org.springframework.web.servlet.handler.SimpleUrlHandlerMapping registerHandler
정보: Mapped URL path [/js/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#3' 4월 09, 2019 6:02:20 오후
org.springframework.web.servlet.handler.SimpleUrlHandlerMapping registerHandler
정보: Mapped URL path [/sass/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#4' 4월 09, 2019 6:02:20 오후
org.springframework.web.servlet.handler.SimpleUrlHandlerMapping registerHandler
정보: Mapped URL path [/publishing/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#5'testQuery xxxx@naver.com 20 4월 09, 2019 6:02:20 오후
org.springframework.context.support.GenericApplicationContext doClose
정보: Closing org.springframework.context.support.GenericApplicationContext@1081592: startup date [Tue Apr 09 18:02:19 KST 2019]; root of context hierarchy

성공적인 결과값

원인은 nameSpace에 있었다.

현재 UserDaoImpl.java 파일이 com.bny.dao 패키지에 있었는데 나는 mapper.xml 파일의 namespace와 java파일의 namespace가 일치만 하면 되는 줄 알았다. 하지만 namespace의 경로도 현재 java파일의 경로와 일치시켜야 제대로 작동되었다.



패키지 까지만 작성한 경우에는 그 패키지 내에 파일이 한개만 있을 경우 자동 맵핑이 되지만 두개 이상 있을 경우 파일명까지 namespace에 적어줘야 맵핑을 시키기 때문에 해당 파일의 경로와 명까지 정확하게 작성해야 정상적으로 작동이 된다.

Author

BAE NAMYUL

Posted on

2021-10-28

Updated on

2021-10-28

Licensed under