상세 컨텐츠

본문 제목

MyBatis Mapper 파일 위치: IntelliJ와 Eclipse의 차이

[SW]/[오류-해결] 2025

by 시원00 2025. 2. 2. 19:28

본문

강의에서 mapper.UserMapper.xml 파일을 com.my.프로젝트명 아래 만들었다.

똑같이 진행했지만 에러 발생.

### Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for UserMapper.메소드명

### Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for UserMapper.메소드명]

 

서치해 본 결과, IntelliJ와 Eclipse의 차이임을 알아냈다. (강의는 Eclipse, 나는 InteliJ 사용)

InteliJ에서 com.my.프로젝트명 폴더는 main.java 아래 위치한다. (Eclipse와의 차이점)

Intelij에서 MyBatis는 기본적으로 resources 폴더에서 매퍼 파일(xml)을 찾는다. 

이 부분이 에러가 발생한 원인이다. 해결 방법은 간단하다.

 

(좌) 수정 전 / (우) 수정 후

 

해결 방법

1. 매퍼 파일 위치 변경

  • src/main/resources/mapper/ 폴더를 생성하고, 기존에 java 폴더에 있던 UserMapper.xml 파일을 이동한다.
  • 최종적으로 src/main/resources/mapper/UserMapper.xml 경로에 위치하도록 한다.

2. application.properties 설정 수정

  • MyBatis가 새로운 매퍼 파일 경로를 찾을 수 있도록 application.properties 설정을 수정한다. (mapper/*xml)
mybatis.mapper-locations=classpath:mapper/*.xml
  • 기존의 classpath:com/my/프로젝트명/mapper/*.xml 설정을 변경하여, resources 폴더 내부의 mapper/ 디렉토리를 올바르게 참조하도록 한다.

3. 애플리케이션 재시작 및 빌드

  • 설정을 변경한 후 반드시 서버를 재시작하여 변경 사항이 반영되도록 한다.
  • ./gradlew build 또는 mvn clean package 명령어를 실행하여 프로젝트를 다시 빌드하고 실행한다.

 

결과

  • resources/mapper/ 폴더로 매퍼 파일을 옮긴 후, MyBatis가 정상적으로 XML 파일을 찾는다.
  • application.properties의 설정을 변경하고 서버를 재시작하면 문제없이 실행된다.
  • IntelliJ와 Eclipse 간의 차이로 인해 발생하는 문제이므로, IntelliJ를 사용할 경우 매퍼 파일을 반드시 resources 폴더 안에 위치시키도록 한다.

 

 

FIN.

관련글 더보기

댓글 영역