티스토리 뷰
MyBatis를 사용하기 위해서는 인터페이스로 해당하는 Mapper
를 작성하고 같은 위치에 실행할 SQL이 있는 XML
매핑 파일을 만들어야 합니다. application.yml이나 application.properties를 수정해서 Mapper가 실행할 XML 파일을 원하는 위치로 이동할 수도 있습니다.
오류 상황
- src/main/java/hello/itemservice/repository/mybatis/ItemMapper.java
- src/main/resources/hello/itemservice/repository/mybatis/ItemMapper.xml
Mapper Interface와 대응되는 XML 파일에 오타가 존재하지 않고 위와 같이 같은 위치에 파일이 존재하지만,
해당하는 문장을 찾을 수 없다는 BindingException
이 발생하였습니다.
해결 방법
IntelliJ를 사용하는 경우 쉽게 실수할 수 있는 문제입니다. XML 파일은 resources 하위에 설정하게 되는데 resources 하위에는 package
경로가 아닌 directory
경로로 접근합니다.
resources 하위에도 package처럼 경로를 생성하면 package처럼 directory가 생성될 줄 알았지만, 그렇지 않습니다.
hello.itemservice.repository.mybatis라는 이름을 가진 하나의 디렉터리가 생성되는 것입니다. 따라서 MapperScan이 동작할 때 원하는 hello/itemservice/repository/mybatis라는 경로가 존재하지 않기에 오류가 발생하는 것입니다.
해결하기 위해서는 directory를 생성하듯 하나씩 directory를 만들어서 해당 경로에 XML 파일이 위치하도록 해야 합니다.
참고
'Etc' 카테고리의 다른 글
[Web] 웹 서버(WS)와 웹 애플리케이션 서버(WAS) (4) | 2023.04.15 |
---|---|
아스키코드와 유니코드 (2) | 2022.11.27 |
댓글