back-end/spring boot

[오류] Invalid bound statement (not found)

study-minjeong 2024. 7. 16. 13:56

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 폴더를 순환하면서 경로의 파일을 모두 찾아냄