[MyBatis] Mapped Statements collection does not contain value
게시글 목록 조회하는 간단한 쿼리문 작성 후 조회하려고 하는데 목록이 뿌려지지 않고 에러가 뜨더라. Mapped Statements collection does not contain value ~~ service에서 값이 안 받아와졌다.
다른 블로그들 보면서 이런 에러가 뜨면 어떤 이윤지 찾아봤는데도 해결 못 하고 끙끙대다가 결국 해결!!! 근데 역시나 다른 곳에서 정리된 것 때문이었다.
📌 1. mapper id가 다른 경우
<select id=""> Mapper 파일에서 설정하는 쿼리 태그 아이디와 DAO에서 지정한 id가 다를 때 이 에러가 날 수 있다.
📌 2. Parameter와 bean 필드명이 틀린 경우
📌 3. mapper 파일에 정의된 네임스페이스와 mapper 파일에 직접 접근하는 java(DAO나 service)에서 호출하는 namespace가 다를 경우
📌 4. MyBatis config 파일에 mapper가 정의 되어 있지 않거나 스펠링이 틀린 경우
📌 5. mapper에 정의된 namewpace 명칭이 같은 application 내에 중복될 경우
내 경우는 applicationContext.xml파일에서 mapper 경로를 설정할 때
<!-- ## Mapper setup ## -->
<bean id="mysqlSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="mysqlDataSource" />
<property name="configLocation" value="/WEB-INF/mybatis-mysql-config.xml" />
<property name="typeAliasesPackage" value="kr.happyjob.study" />
<!-- <property name="mapperLocations" value="classpath*:kr/happy/jobkorea/**/dao/mapper/*Mapper.xml" /> -->
<property name="mapperLocations" value="classpath*:sql/*/*Mapper.xml" />
</bean>
<property name="mapperLocations" value="classpath*:sql/*/*Mapper.xml" /> 에서 경로를 Mapper.xml로 끝나야된다고 만들어 놨는데 원본 파일을 복사해서 Mapper2.xml로 만들어놔서 아예 mapper를 읽지 못 했던 것!!!!!!!
설정이 반이다... 설정 잘 확인하자 이로인해 배운 점도 많다.