[Mybatis] 매퍼 상속 개념과 예제
MyBatis에서 매퍼 상속은 코드 재사용과 유지보수를 쉽게 하기 위해 사용되는 기능입니다. 상속을 통해 공통된 쿼리나 매핑을 하위 매퍼에서 재활용할 수 있습니다. 아래에 매퍼 상속의 개념과 예제를 제공하겠습니다.
- 매퍼 상속 개념:
매퍼 상속은 자식 매퍼가 부모 매퍼의 내용을 상속받아 사용하는 기능을 의미합니다. 부모 매퍼에 공통된 SQL 쿼리나 매핑을 정의하고, 자식 매퍼에서는 이를 재활용하여 중복을 줄이고 코드를 간결하게 관리할 수 있습니다.
- 매퍼 상속 예제:
부모 매퍼인 BaseUserMapper.xml
에서 공통된 쿼리를 정의하겠습니다.
<!-- BaseUserMapper.xml -->
<mapper namespace="your.package.BaseUserMapper">
<select id="selectUserById" resultType="your.package.User">
SELECT * FROM users WHERE id = #{id}
</select>
<!-- 나머지 공통 쿼리들 -->
</mapper>`
자식 매퍼인 UserMapper.xml
에서는 상속을 통해 부모 매퍼의 쿼리를 사용하겠습니다.
<!-- UserMapper.xml -->
<mapper namespace="your.package.UserMapper">
<include resource="your/package/BaseUserMapper.xml"/>
<!-- 자식 매퍼에서 추가적인 쿼리 등 정의 -->
</mapper>`
위의 예제에서 include
요소를 사용하여 BaseUserMapper.xml
의 내용을 상속하였습니다. 이제 UserMapper.xml
내에서 selectUserById
와 같은 쿼리를 사용할 수 있습니다.
SqlSessionFactory sqlSessionFactory = ...; // SqlSessionFactory 생성
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.selectUserById(1); // 부모 매퍼에서 상속받은 쿼리 사용
sqlSession.close();`
이렇게 매퍼 상속을 사용하면 공통된 쿼리를 중복 정의하지 않고도 여러 매퍼에서 활용할 수 있습니다. 코드의 재사용성을 높이고 유지보수를 용이하게 할 수 있는 장점이 있습니다.