Backend
[프로젝트] 블로그 만들기 #2. Mapper와의 전쟁
bunny_coder
2023. 9. 3. 16:44
CRUD를 기반으로 한 MVC 패턴을 Spring Boot로 만들려고 하는데 문제는 MyBatis를 활용하다 보니 Mapper 오류를 엄청 많이 경험했다. (진짜 Mapper 때문에 시간을 엄청 잡아먹었다....)
그래서 오늘은 여태까지 프로젝트를 진행하면서 경험했던 Mapper의 오류들에 대해 알아보자!
Mapper 파일의 오타
일단 가장 흔하게 나타나고 주로 나타났던 오류는 역시 오타였다.
에러가 난다면 해당 Mapper에 오타가 있는 건 아닌지 확인해보자.
1. Mapper가 존재하는 경로와 application.properties의 경로와 같은지 확인해보자.
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userService': Unsatisfied dependency expressed through field 'userMapper'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userMapper' defined in file [C:\Users\~]
이 경우엔 bean을 만들지 못하는 건, 해당 mapper로 접근하지 못한다는 오류가 뜬다.
해결방법
mybatis.mapper-locations=classpath:mapper/*.xml
보통 이렇게 application.properties로 설정하는데 이것도 안되면
mybatis.mapper-locations=classpath:mapper/**/*.xml
추가로 이렇게 설정해보기도 했다.
2. Mapper에 존재하는 SQL 쿼리문이 잘못된 경우
쿼리가 잘못된다는 오류 메시지나 sqlsessionfactory에서 만들지 못한다는 오류도 있다.
- ""(큰따옴표)가 포함되어 있거나
- {(중괄호)가 [(대괄호)로 잘못 되어 있거나
- parameterType에 있는 패키지의 경로가 제대로 되어있는지
그래서 보통 SQL command line에서 해당 쿼리문을 실행해서 성공하는지 확인해보았다.
3. @Mapper 까먹지 말자.
@Mapper 태그가 없으면 mapper를 Spring boot에서 찾지 못한다. 까먹지 말자.
번외. Mapper 문제가 아닐 수도...
DB 단에서 실행한 데이터가 보이지 않는다면 어쩌면 Commit을 안 했을 수도 있다.
아니면 Service, Controller에 문제가 있을 수도 있다. 잘 살펴보자...