Mybatis를 사용하면서 잘 나타나는 오류이다.
아래는 오류가 발생하는 원인들이다.
1. Mapper 인터페이스와 xml의 오타
선언하는 id에 오타가 있을 수도 있고, id가 mapper 인터페이스의 메서드 명과 다른지 확인
2. mapper-locations
쿼리가 작성되어 있는 mapper xml이 위치한 경로를 application.properties에 정의하지 않아서, 잘못 선언해서 발생할 수 있다.
3. 동일한 이름, 다른 패키지 경로
패키지 이름이 달라서 컴파일 오류가 발생하는 경우이다.
4. yaml 파일 오타
yaml 파일에서 작성할 때 최상단에 spring이 아니라 mybatis가 위치해야한다.
5. Datasource configuration 점검
SessionFactory가 설정된 경우 setMapperLocations 등으로 mapper xml 위치를 선언을 잘 했는지 확인하고, @MapperScan이 선언된 경우에 Mapper 인터페이스가 있는 위치와 일치하는 지 확인한다.
나의 경우에는~~ 5번이었다.
mapper.xml이 위치하는 패키지 경로를 다시 설정해주고, setMapperLocations에 패키지 경로를 각각 설정해주었다.
경로 설정
1) classpath:***/***.xml
classes 폴더와 jar 폴더를 순환하면서 첫번째로 발견되는 파일을 가져옴
2) classpath*:***/***.xml
classes 폴더와 jar 폴더를 순환하면서 경로의 파일을 모두 찾아냄