⌗ 오류 현상
mybatis 테스트 코드 작성시 @MybatisTest 어노테이션을 붙였는거나 그 외에도
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 라고 에러가 날때.
⌗ 해결 방법
아래의 순서에 맞춰 해결하면 된다. ^0^
- Mapper Interface와 mapping되는 xml파일에 오타가 있는 경우
(예시) id와 Interface에 메소드명이 일치하지 않는 경우 - Build 파일이 갱신되지 않은 경우
- classpath에 경로가 잘못된 경우
- xml이 저장될 경로를 잘못 생성한 경우
- DataBase confiure 파일을 찾지 못하는 경우
1 )
대부분 이와 같은 에러가 발생하는데, 오타만 찾으면 금방 해결이 가능하다.
2 )
build 폴더에 파일 내용들이 갱신되어 있는지 확인한다.
3 )
mapper xml에 작성된 classpath 경로가 연결하려는 DB 경로와 맞게 설정되어 있는지 확인한다.
4 )
IntelliJ를 사용하는 경우에는 쉽게 인지를 못하는 경우가 많다.
예를 들어, 아래와 같이 interface package와 XML 파일이 있는 폴더 경로가 있다고 생각해보자.
interface package 경로 : com.spring.java.mapper 라는 package에 Mapper Interface가 있음
XML(Mapper) directory 경로 : com/spring/java/mapper
필자는 xml이 있어야할 경로(classpath)를 resources 하위에 설정하는 데,
이때 javaConfig의 @MapperScan 어노테이션이 xml directory에 접근한다. 이게 문제였다.
필자는 resources 밑에 package처럼 경로를 만들어도 당연히 package처럼 생성이 될 줄 알았는데 그렇지 않았다.
resources 밑에는 package를 생성하지 못하고 directory만 생성이 가능한데
이 directory를 생성할 때 com.spring.java.mapper라는 directory를 생성하면 그냥 "."을 포함한 폴더가 생성되는 것이다.
그런데 @MapperScan은 "."을 포함한 폴더가 아니라 com/spring/java/mapper와 같은 경로에 폴더를 원하기 때문에
Invalid bound statement (not found):와 같은 에러가 나는 것이다.
즉, com폴더 밑에 spring 폴더 밑에 java 폴더 밑에.... 이런식으로 하나씩 만들어야 접근 가능한 폴더 경로가 생성 된다.
(= 폴더명을 “.”을 포함해서 생성하지 말자 !!)
5 )
mapper xml을 제대로 못 읽어와서 발생하는 현상으로,
@ImportAutoConfiguration 어노테이션으로 강제로 설정했던 configuration을 import해주면된다.
단, 강제로 지정하기 때문에 위 방법들이 모두 안되는 경우에 시도하도록 하자.
@ImportAutoConfiguration(DatabaseConfiguration.class)
[참고]
https://berrrrr.github.io/programming/2019/09/07/mybatis-bind-fail/
https://taccisum.github.io/instantiationexception_on_mybatistest.html
'Issue' 카테고리의 다른 글
[Spring] Cannot determine embedded database driver class for database type NONE 오류 해결 (0) | 2020.10.05 |
---|---|
[Spring] 빈 순환 참조로 인한 오류 해결 (0) | 2020.10.05 |
[Java][Mybatis] 테스트 코드 실행 중 org.mybatis.spring.MyBatisSystemException 오류 해결 (0) | 2020.10.05 |
[Java] java.lang.IllegalArgumentException: Request header is too large 오류 해결 (0) | 2020.10.05 |
[Java] java.io.NotSerializableException 오류 해결 (0) | 2020.09.08 |
[Java] JSON parse error 오류 해결 (0) | 2020.07.22 |