Mybatis에서 동적 쿼리란?
>> 우선 "정적 쿼리"란?
: 고정된 조건의 쿼리를 말함 (항상 해당 조건에 맞는 값만 출력)
SELECT * FROM MEMBER WHERE GENDER = 'F';
>> "동적 쿼리"란?
SELECT * FROM MEMBER
WHERE 1=1
<if test="gender != null">
AND GENDER = #{gender}
</if>
<if test="age != null">
AND AGE > #{age}
</if>
Mybatis XML에서는 위처럼 <if> 조건을 사용하여 사용자가 선택한 필터에 따라 SQL이 유동적으로 달라지는 것을 동적 쿼리라고 한다.
실제 사용 예시 (MyBatis XML)
<select id="searchMembers" resultType="MemberVO">
SELECT * FROM MEMBER
WHERE 1=1
// WHERE 1=1 은 항상 참(True)인 조건을 말함
// SELECT * FROM MEMBER 와 같다.
<if test="gender != null">
AND GENDER = #{gender}
// where 1=1이 있기 떄문에 AND를 첫 조건에도 쓸 수 있고,
// 여러 개의 AND를 붙여도 된다.
</if>
<if test="keyword != null">
AND MEMBER_NAME LIKE CONCAT('%', #{keyword}, '%')
</if>
</select>
WHERE 1=1을 쓰면, 조건이 하나든 둘이든 항상 AND 조건 형태로 붙일 수 있다.
'웹 개발' 카테고리의 다른 글
[Backend] API와 컨트롤러 (0) | 2025.05.15 |
---|---|
[Front+Backend] 로그인 과정에서의 처리 과정 & AJAX와의 데이터 응답 (0) | 2025.05.14 |
[Github] Github 프로젝트 연결하기 (0) | 2025.05.12 |
[Front] 코드 분석 중 jQuery (0) | 2025.05.11 |
[Backend] 보안에서 GET, POST (0) | 2025.05.10 |