[Tomcat] java.lang.IllegalArgumentException: Mapped Statements collection does not contain value 오류 해결

suyeon·2022년 8월 1일
0

MyBatis를 적용하다가 에러가 발생하였다. 발생한 에러는 아래와 같다.

❓ 에러 메시지

8월 01, 2022 5:00:16 오후 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: 경로 [/web]의 컨텍스트 내의 서블릿 [appServlet]을(를) 위한 Servlet.service() 호출이, 근본 원인(root cause)과 함께, 예외 [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 project.alist
### Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for project.alist]을(를) 발생시켰습니다.
java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for project.alist
at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:1063)

❓ 원인

위와 같은 에러가 발생할 경우 아래와 같이 여러 원인이 존재할 수 있다고 한다.

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

🙋‍♂️ 해결 방안

나의 경우에는 mapper 패키지명이 잘못되어 발생한 에러였다.

root-context.xml 파일 수정

<bean id="sessionfactory" class="org.mybatis.spring.SqlSessionFactoryBean">
	<property name="dataSource" ref="log4j"></property>
	<property name="mapperLocations" value="classpath*:com/spring/mapper/*.xml"></property>
	<property name="configLocation" value="/WEB-INF/mybatis.xml"></property>
</bean>

📎 참고사이트
MyBatis

0개의 댓글