org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
해당 이슈를 검색하면 mybatis의 xml에서 namespace등 이름이나 경로, 공백이 추가되어 장애가 발생한 경우로 소개되어서 해결하는데 많은시간 소요되었다.
이번 경우는 Intellij IDE
에서 리소스 파일(xml, properties, yml..등)은 resources
폴더 내에서만 인식을 하는 정책으로 발생한 이슈이다. STS IDE는 이슈없음
예제 사진에서 보이는 프로젝트 구조에서는 src/main/java
안에 ***Mapper.java
, ***Mapper.xml
를 같이 담아져 있다.
즉, .xml
이 src/main/resources
가 아닌 src/main/java
에 있기에 mybatis에서 xml파일 인식을 못하는 이슈이다.
Maven빌드시 src/main/java 경로에 존재하는
모든 하위 .xml 파일도
빌드에 포함시키도록 Maven의pom.xml
에 설정을 추가해야 한다.xml이 아니라도 아래처럼 응용하면 된다.
<build>
<resources>
<resource>
<!-- src/main/java 폴더의 xml파일들을 빌드에 포함 -->
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<!-- src/main/resources 폴더의 xml, properties, yml, setting파일들을 빌드에 포함 -->
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
<include>**/*.yml</include>
<!-- <include>**/*.setting</include>-->
</includes>
</resource>
</resources>
</build>
pom.xml 설정 후 Maven빌드를 재실행.
Maven clean -->Spring Boot application
ORMaven compile
Java Application Run
실행시 target폴더 생성Maven compile
실행 해도 target폴더 생성이 된다..xml이 빌드에 포함 안될때도 있었다.
Mybatis plugin 추천(intellij)
MybatisX : **Mapper.java 에서 연결되어지는 **Mapper.xml 로 쉽게 이동이 된다.