https://hu-studyrecord.tistory.com/79
- 이전 포스팅에서는 Mybatis를 사용하던 중 경로 오류에 대해 설명하고 해결하였다
- 이번에는 Mapper가 같은 이름으로 작성했을 때의 오류를 말하고자 한다
Caused by: java.lang.IllegalArgumentException: Mapped Statements collection already contains key org.example.mybatis02.select. please check file [C:\Java\SpringProjects\mybatis02\build\resources\main\mappers\mapper1.xml] and file [C:\Java\SpringProjects\mybatis02\build\resources\main\mappers\mapper2.xml]
at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:1071) ~[mybatis-3.5.14.jar:3.5.14]
at org.apache.ibatis.session.Configuration$StrictMap.put(Configuration.java:1024) ~[mybatis-3.5.14.jar:3.5.14]
at org.apache.ibatis.session.Configuration.addMappedStatement(Configuration.java:822) ~[mybatis-3.5.14.jar:3.5.14]
at org.apache.ibatis.builder.MapperBuilderAssistant.addMappedStatement(MapperBuilderAssistant.java:223) ~[mybatis-3.5.14.jar:3.5.14]
at org.apache.ibatis.builder.xml.XMLStatementBuilder.parseStatementNode(XMLStatementBuilder.java:120) ~[mybatis-3.5.14.jar:3.5.14]
at org.apache.ibatis.builder.xml.XMLMapperBuilder.buildStatementFromContext(XMLMapperBuilder.java:143) ~[mybatis-3.5.14.jar:3.5.14]
at org.apache.ibatis.builder.xml.XMLMapperBuilder.buildStatementFromContext(XMLMapperBuilder.java:135) ~[mybatis-3.5.14.jar:3.5.14]
at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:125) ~[mybatis-3.5.14.jar:3.5.14]
... 90 common frames omitted
- 우선, 오류 메시지를 확인하기 위해서는 맨 마지막 오류를 살펴야한다
- .IllegalArguementException: 뒤를 보면 org.exmple.mybaties.02.select가 이미 있기 때문에 xml 파일을 확인하도록 권장한다
- 따라서 파일을 살펴보면 mapper1.xml과 mapper2.xml 의 namespace가 동일하여 충돌이 발생했음을 알 수 있었다
- 이제 아래와 같이 코드를 수정하면 정상적으로 동작하는 것을 확인할 수 있다
<mapper namespace="org.example.mybatis01">
<select id="select" resultType="String">
select now() as now
</select>
</mapper>
<mapper namespace="org.example.mybatis02">
<select id="select" resultType="String">
select version() as version
</select>
</mapper>
- xml 호출 부분
public String select(){
return sqlSessionTemplate.selectOne("org.example.mybatis02.select");
}
- 구조가 복잡해짐에 따라 빠르게 코드를 작성하려는 마음보다 오타, 경로 확인을 잘하여 오류 발생을 최소화하려는 노력을 해야한다.
'IntelliJ' 카테고리의 다른 글
[Error] org.apache.ibatis.binding.BindingException: (0) | 2024.11.23 |
---|---|
[Error] Invalid vound statement(not found) (0) | 2024.11.22 |
[Error] java.lang.IllegalArgumentException (0) | 2024.11.20 |
[Error] ClassNotFoundException (0) | 2024.11.19 |
[Error] Error starting ApplicationContext (0) | 2024.11.19 |