Notice
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- JUnit
- spring pid
- spring-webmvc #코드읽기
- docker
- Spring Data REST
- spring boot
- JPA mapping
- spring batch 코드
- tomcat
- spring-mvc
- spring jpa
- SuperTypeToken
- 코드 리뷰
- spring camp
- batch
- spring-webmvc
- 세미나
- ApplicationPidFileWriter
- spring boot tomcat
- REST API
- IntelliJ
- Data REST
- static inner class
- Spring Batch
- Spring
- spring bean
- 톰캣
- Spring Data JPA
- ORM
- JPA
- Today
- 132
- Total
- 821,657
woniper
[MyBatis] Invalid bound statement (not found): 에러 본문
Invalid bound statement (not found): 에러가 발생하는 이유가 몇 가지 있는데 아무리 찾아봐도 내 문제는 해결되지 않았다.
에러 원인은 아래와 같다.
- Mapper Interface와 mapping되는 xml파일에 오타가 있는 경우 : 예를 들면 id와 Interface에 메소드명이 일치하지 않는 경우
- classpath에 경로가 잘못된 경우
- xml이 저장될 경로는 잘못 생성한 경우
대부분 1번과 같은 에러가 발생하는데 이는 오타만 찾으면 금방 해결이 가능하다. 근데 3번과 같은 경우(내가 겪은 에러)는 쉽게 인지 하지 못하는 경우가 많다. 주의해서 생성할 필요가 있다.
어떤 경우였냐면 나는 Intellij를 사용하는데 예를 들어
Inteface package 경로 : net.woniper.spring.java.mapper 라는 package에 Mapper Interface가 있다.
XML(Mapper) directory 경로 : net/wonierp/spring/java/mapper
나는 xml이 있어야할 경로를 classpath 즉 resources 밑에 넣어 놓는데 이때 javaConfig의 @MapperScan 어노테이션을 사용할 때 xml directory에 접근한다. 이게 문제였다.
나는 resources 밑에 package처럼 경로를 만들어도 당연히 package처럼 생성이 될 줄 알았는데 그렇지 않았다.
resources 밑에는 package를 생성하지 못하고 directory만 생성이 가능한데 이 directory를 생성할 때 net.woniper.spring.java.mapper라는 directory를 생성하면 그냥 "."을 포함한 폴더가 생성되는 것이다. 그런데 @MapperScan은 "."을 포함한 폴더가 아니라 net/woniper/spring/java/mapper와 같은 경로에 폴더를 원하기 때문에 Invalid bound statement (not found):와 같은 에러가 나는 것이다. 즉 net폴더 밑에 woniper 폴더 밑에 spring 폴더 밑에.... 이런식으로 하나씩 만들어야 접근 가능한 폴더 경로가 생성 된다.
저번에도 이것 때문에 고생했던 기억이 있는데 또 이런 실수를 한다. 전혀 예상치 못한 에러였다. 조심하자.
'Framework' 카테고리의 다른 글
[JPA] JavaEE 환경(Spring)에서 JPA 설정 및 CRUD (0) | 2015.05.02 |
---|---|
[JPA] JavaSE 환경에서 JPA 설정 및 CRUD (2) | 2015.05.02 |
[JPA] JPA란 무엇인가? (11) | 2015.05.01 |
[MyBatis] Invalid bound statement (not found): 에러 (7) | 2015.04.01 |
[mybatis] foreach를 이용한 다중 insert (1) | 2014.05.07 |
[mybatis] insert 후 key값 반환 (0) | 2014.05.07 |
공유하기 링크
7 Comments
-
꽁뇽 2015.12.28 08:54 오, 역시 저도 Interface와 이름이 달랐던 오타로 인한 거였네요.
단어 구분을 위한 대소문자 부분이 소문자로 되어있었네요. :D 감사합니다.
-
woniper1 2015.12.28 10:25 신고 잘 해결하셨다니 다행이네요~ 감사합니다.
-
강한용 2016.01.13 11:34 검색하다 들어왔는데 반갑습니다! ㅋㅋㅋ
-
최강용 2016.05.20 20:11 검색하다가 들어왔는데 반갑네요 ㅎ
-
김도연 2016.08.16 16:50 저도 interface 이름이 달라서 생긴 문제였군요.. 감사합니다 !
-
엄범 2019.07.19 15:10 신고 감사합니다. 덕분에 빨리 해결했네요!
-
bum1988 2020.02.20 11:16 신고 덕분에 해결되었습니다