[Mybatis] 매퍼 상속 개념과 예제

매퍼 상속은 MyBatis에서 매퍼 파일 간에 공통된 SQL 쿼리를 재사용하기 위한 방법입니다. 매퍼 상속을 사용하면 중복 코드를 줄이고 쿼리를 재사용할 수 있습니다. 아래는 매퍼 상속의 개념과 예제입니다.

  1. 부모 매퍼 (BaseMapper.xml):
<mapper namespace="BaseMapper">
  <select id="selectAllBooks" resultType="Book">
    SELECT * FROM books
  </select>
</mapper>` 
  1. 자식 매퍼 (BookMapper.xml):
<mapper namespace="BookMapper">
  <include resource="BaseMapper.xml"/>
  
  <!-- 자식 매퍼에 추가된 쿼리 -->
  <select id="selectBooksByAuthor" resultType="Book">
    SELECT * FROM books WHERE author = #{author}
  </select>
</mapper>` 

위의 예제에서 BaseMapper.xml은 공통된 SQL 쿼리를 가지고 있는 부모 매퍼이며, BookMapper.xmlBaseMapper.xml을 상속하고 부모 매퍼의 쿼리를 재사용하면서 필요한 쿼리를 추가한 자식 매퍼입니다.

자식 매퍼에서 <include> 태그를 사용하여 부모 매퍼의 쿼리를 포함하고 있습니다. 이렇게 하면 부모 매퍼에 있는 쿼리를 자식 매퍼에서도 사용할 수 있습니다.

이제 자식 매퍼에서는 부모 매퍼의 쿼리인 selectAllBooks를 사용하면서 추가적으로 selectBooksByAuthor라는 쿼리를 정의하고 있습니다.

이렇게 하면 공통된 쿼리를 부모 매퍼에 정의하고, 각각의 자식 매퍼에서 필요한 쿼리를 추가하여 코드의 재사용성을 높일 수 있습니다.