IntelliJ

[Error] java.lang.IllegalArgumentException

HU_717 2024. 11. 20. 21:35

MyBatis

  • Java Object와 SQL문 사이의 자동 Mapping 기능을 지원하는 Persitence Framwork이다
  • SQL을 별도의 파일로 분리해서 관리하며, 객체와 SQL 사이의 parameter mapping 작업을 자동으로 처리해준다

Mapping Err

  • Spring Boot에서 MyBatis를 사용하다보면 여러 오류를 발생할 수 있는데 대표적으로 경로 오류가 발생한다
Caused by: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for org.example.mybatis0.select
	at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:1097) ~[mybatis-3.5.14.jar:3.5.14]
	at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:875) ~[mybatis-3.5.14.jar:3.5.14]
	at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:868) ~[mybatis-3.5.14.jar:3.5.14]
	at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:152) ~[mybatis-3.5.14.jar:3.5.14]
	... 52 common frames omitted
  • MyBatis를 사용하면, mapper.xml을 작성하게 되는데 여기서의 namespace와 MyBatisRepository의 경로를 똑같이 작성해야한다
 public String select(){
    return sqlSessionTemplate.selectOne("org.example.mybatis02.select");
}
<mapper namespace="org.example.mybatis02"></mapper>

 

  • 꼭 복잡한 구조일수록 경로를 옳게 썼는지 확인하는 과정이 필요하다