error

[MyBatis] BindingException@1300 "org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.demo.dao.FileMapper.getData"

dddzr 2023. 9. 25. 16:23

BindingException@1300 "org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.demo.dao.FileMapper.getData"

이 오류는 MyBatis에서 SQL 쿼리나 매퍼 파일에 대한 문제가 있을 때 발생합니다.

에러 메시지를 자세히 살펴보면 com.demo.dao.FileMapper.getData라는 매핑된 문장(statement)을 찾을 수 없다는 내용입니다. 이 오류를 해결하기 위해 다음 몇 가지 단계를 따를 수 있습니다:

 

mapper.xml에 해당 문장이 정의되어 있었지만 에러가 발생했습니다.

<select id="getData" databaseId="Oracle" resultType="java.lang.String">
    //SELECT ~
</select>

databaseId를 제거 했을 때 정상적으로 동작했습니다.

 

databaseId는 MyBatis에서 사용되는 선택적인 속성으로, 데이터베이스 식별자(database identifier)를 지정합니다. 

  • 다중 데이터베이스 지원: 다중 데이터베이스를 지원하는 환경에서 매퍼 파일 내에서 동일한 SQL 문을 서로 다른 데이터베이스에 대한 SQL 문장을 구분할 수 있습니다.
  • 동적 SQL 처리: MyBatis는 SQL 매퍼 파일에서 동적 SQL을 사용할 수 있도록 지원합니다. databaseId를 사용하면 서로 다른 데이터베이스에 대해 동적 SQL을 생성할 수 있습니다.

databaseId 속성은 대부분의 경우 선택적으로 사용되며, 애플리케이션에서 하나의 데이터베이스만 사용하는 경우에는 필요하지 않을 수 있습니다.