친구랑 하는 작은 사이드 프로젝트를 구성하다가 만난 오류이다.
우선 다음과 같은 오류를 직면하게 된다.
심각: Servlet.service() for servlet [appServlet] in context with path [/edufactory] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for testMapper.dataValue
### Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for testMapper.dataValue] with root cause
java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for testMapper.dataValue
at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:797)
at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:631)
at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:624)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:107)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:102)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:358)
at com.sun.proxy.$Proxy9.selectList(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:198)
at rsc.binoofactory.edufactory.commons.svc.TestMapper.dataValue(TestMapper.java:12)
at rsc.binoofactory.edufactory.HomeController.home(HomeController.java:42)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:747)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:676)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:808)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
구성요소에는 HomeController 와 TestMapper 정도가 전부이다.
무엇이 문제일까?
크게보면 아래 3가지 중 하나이니 먼저 확인해보도록 하자.
(1) Parameter, Return이 매퍼와 bean에 등록된 개체간 field명, 또는 타입이 틀린 경우
- VO 를 사용하는 경우, 속성명과 타입이 다른 파라미터나 리턴이 다르면 오류를 뱉는다.
(2) mapper가 정의가 되어 있지 않거나 Spelling이 틀린 경우
- 매퍼가 있는지 확인
- 매퍼의 경로나 파일명 확인
- 매퍼 내부 id와 호출 id가 일치하는지 확인
- 설정정보에서 네임스페이스와 엑세스 객체의 네임스페이스 String을 확인한다.
(3) mapper에 정의된 namespace 명칭이 같은 Application 내에 중복 될 경우
- 충돌이 발생하는 네임스페이스를 해당 프로젝트에서 뒤져서 유니트하게 만들어준다. 리소스 정리 이후 재실행.
참고/출처 : https://luceatluxvestra.tistory.com/17
[에러] java.lang.IllegalArgumentException: Mapped Statements collection does not contain value
진행하고 있던 프로젝트에 MyBatis를 적용하다가 에러가 나서 정리해 둔다. 발생한 에러는 아래와 같다. * 에러 메세지 심각: Servlet.service() for servlet [action] in context with path [/xxx] threw excepti..
luceatluxvestra.tistory.com
'programming > java, Spring, android, js' 카테고리의 다른 글
[Html + Javascript] Client Side Storage VS Server Side Storage (0) | 2019.12.04 |
---|---|
[Android] Obsolete configuration warning (0) | 2019.11.07 |
[Android] 가로 세로 회전 (2) | 2019.10.23 |
[Spring boot+Quartz] 배치 샘플 (0) | 2019.10.18 |
[Java] Binary to Byte File (0) | 2019.06.05 |