MyBatis는 자바 개발자들이 데이터베이스를 쉽게 다룰 수 있도록 도와주는 오픈 소스 ORM(Object-Relational Mapping) 프레임워크이다.
MyBatis는 데이터베이스 쿼리 <-> 프로그래밍 언어 코드를 분리하여 유지보수성과 생산성을 높이는 것.
동적 쿼리란, 실행 시점에 조건에 따라 SQL 쿼리를 동적으로 생성하는 것.
이는 데이터베이스의 검색 조건이나 결괏값 등이 동적으로 변화할 때 유용하게 사용된다.
MyBatis에서는 동적 쿼리를 작성하기 위해
<if>, <choose>, <when>, <otherwise>, <foreach>
등의 태그를 사용할 수 있다.
아래는 MyBatis에서 동적 쿼리를 작성하는 예제이다.
getUserList() 메서드 호출 시 name과 email 파라미터가 null이 아니면
해당 조건을 포함하는 SQL 쿼리를 동적으로 생성하여 조회한다.
// xml 파일
<select id="getUserList" resultType="User">
SELECT * FROM users
<where>
<if test="name != null"> // 동적 쿼리
AND name = #{name}
</if>
<if test="email != null"> // 동적 쿼리
AND email = #{email}
</if>
</where>
</select>