본문 바로가기

Mybatis

[mybatis] mapper.xml 과 mapper interface

처음에 이 관계를 몰랐는데..

좀 가지고 놀다보니까.. 아~ 하는 부분이 있어서 정리..


테스트를 위한 기본 셋팅


1. Dual.java


2.DualMapper.xml

 

3. DualMapper.java


mapper xml을 보면 namespace가 있는데 이 namespace를 mapper interface의 이름과 맞춰주면 xml의 설정과 인터페이스에 선언한 설정을 같이 사용 할 수 있게 된다. 그리고 제약도 같이 적용이 된다.


즉 위의 상황에서 DualMapper의 selectAll2 메서드를 selectAll로 변경하게 되면 이미 mapper.xml에서는 selectAll이라는 id가

존재하기 때문에 에러가 발생한다.


결국, Mapper Interface의 메서드는 id로 @select 어노테이션은 select구문으로, @ResultMap 어노테이션은

mapper.xml에서 설정한 resultmap의 id를 가르킬 수 있게 된다.


위와 같이 설정한 경우 아래의 구문은 모두 사용가능하다.