[Mybatis] Invalid bound statement (not found)개발노트/Mybatis2020. 8. 21. 01:20
Table of Contents
먼저! 에러 원인을 직.독.직.해 하자면 "잘못된 바인딩 문" 라고 파나고가 해석해준다.
흠.. 잘못된 바인딩이라... 뭔 말?!
바로 구글링 해보니 "Mapper인터페이스 와 Mapper xml파일에 오타로 인한 경로 설정이 잘못된 경우 발생한다"라고 설명한다.
원인
Mapper Xml파일의 namespace경로 설정 문제
DAO와 Xml파일을 연결하기 위해 DAO에는 @Mapper어노테이션을 선언하고 Xml파일에는 namespace경로를 작성한다.
이때 namespace에 작성한 DAO경로가 틀린 경우 "Invalid bound statement (not found)" 에러가 발생한다.
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ErrorTest {
public testDto selectTest();
}
위 ErrorTest 클래스와 아래 Xml파일을 연결시키기 위해서 ErrorTest 클래스에는 @Mapper어노테이션을 선언하고 Xml파일에는 namespace에 ErrorTest 클래스의 경로를 작성한다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.test.Dao.ErrorTest">
</mapper>
그런데! 여기서 namespace의 경로가 잘못!! 설정된 경우 에러가 발생한다!
mapper namespace="com.test.Dao.ErrorTest" 에 ErrorTest 클래스가 위치한 경로를 잘못 적었거나 namespace경로에 ErrorTest 클래스가 없거나 등등..
거의 99% 오타로 인해 발생한다.. 자아알~ 찾아봐라. 숨어있는 오타가 있을 것이다.(찾는 순간 허탈함이 가득...)
@superpil :: 주니어 개발자의 성장기
개발 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!