Mapped Statements collection does not contain value for XXX

이 Exception이 나지 않게 하기 위해서 처리해야 할 것들

 

1. Mapper 설정을 잘 확인하기

Spring Bean 설정을 살펴보며, 제대로 import 되었는지 체크해야 한다.

그리고, bean 설정의 SqlSessionFactory안의 configLocation 에 제대로 mybatis 설정을 제대로 지정하는지 확인한다.

 

<bean id="statSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="statDataSource" />
    <property name="configLocation" value="classpath:mybatis/stat-mybatis-config.xml" />
</bean>

 

2. 바인딩된 쿼리 문을 확인한다. 

오타로 인해서 쿼리문을 못찾는 경우가 있다. 

 

3.  mapper의 basePackage 설정을 확인한다. 유일무인 값을 지정해줘야 한다.

단, 이미 등록한 mybatis mapper 설정의 하위 디렉토리 이름도 넣지 않도록 한다. 무조건 에러 난다.

 

여러 개의 DB를 사용하는 경우 dao를 하나의 패키지안에 넣는 경우가 없도록 해야 한다.

 

이미 아래와 같은 설정이 bean 설정에 포함되어 있다면.

<bean id="statMapper" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.google.admin.stat" />
    <property name="sqlSessionFactoryBeanName" value="statSqlSessionFactory" />
</bean>

 

아래와 같은 설정은 Mybatis가 읽지 못한다.

<bean id="statAMapper" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.google.admin.stat.A" />
    <property name="sqlSessionFactoryBeanName" value="statSqlSessionFactory" />
</bean>

 

-> 패키지 이름을 따로 만들어주어야 제대로 동작한다.

<bean id="statAMapper" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.google.admin.statA" />
    <property name="sqlSessionFactoryBeanName" value="statSqlSessionFactory" />
</bean>


Posted by 김용환 '김용환'

댓글을 달아 주세요