반응형
안녕하세요. 경제적, 시간적 자유를 꿈꾸는 한량입니다.
<where> 태그는 주로 동적 SQL을 작성할 때 사용되며,
WHERE 절을 동적으로 생성할 수 있도록 도와주는 태그입니다.
<where> 태그는 조건이 추가되는 경우
'AND'나 'OR'와 같은 불필요한 연산자를 자동으로 처리하여
유연한 동적 SQL을 작성할 수 있도록 지원합니다.
1. <where> 태그의 구문 및 사용법
<select id="getUserList" resultType="User">
SELECT * FROM Users
<where>
<!-- 조건이 추가될 경우 동적으로 AND 조건을 생성 -->
<if test="username != null">
AND username = #{username}
</if>
<if test="email != null">
AND email = #{email}
</if>
<!-- 기타 다양한 조건 추가 가능 -->
</where>
</select>
1. <where> 태그 내에 포함된 조건은 조건이 추가될 때마다 'AND'로 연결됩니다.
2. <if> 태그를 사용하여 각 조건을 동적으로 추가하고,
필요한 경우 'AND'나 'OR'와 같은 연산자는 자동으로 처리됩니다.
2. <where> 태그의 예제
<select id="getUserList" resultType="User">
SELECT * FROM Users
WHERE
<if test="username != null">
username = #{username}
</if>
<if test="email != null">
AND email = #{email}
</if>
<if test="status != null">
AND status = #{status}
</if>
</select>
어떤 조건에도 해당되지 않는다면 아래와 같은 SQL이 만들져 에러를 발생할 것입니다.
SELECT * FROM Users
WHERE
두 번째 조건만 만족한다면 아래와 같은 SQL이 만들져 에러를 발생할 것입니다.
SELECT * FROM Users
WHERE
AND email = 'CODEMAN@GMAIL.COM'
이렇한 에러를 방지하기 위해 <where> 태그를 사용합니다.
<where> 태그를 사용하여 코드를 수정하면 아래와 같은 코드로 수정됩니다.
<select id="getUserList" resultType="User">
SELECT * FROM Users
<where>
<if test="username != null">
AND username = #{username}
</if>
<if test="email != null">
AND email = #{email}
</if>
<if test="status != null">
AND status = #{status}
</if>
</where>
</select>
사용자가 검색 조건으로 'username', 'email', 'status'를 전달할 때,
각각의 조건이 동적으로 추가되고
<where> 태그는 이를 'AND'로 연결하여 유연한 'WHERE'절을 생성합니다.
이렇게 <where> 태그를 사용하면 필요한 조건이
동적으로 추가되어도 쿼리가 깔끔하게 유지되며,
불필요한 'AND'나 'OR' 연산자를 신경 쓰지 않아도 됩니다.
이는 동적 SQL을 작성할 때 가독성과 편의성을 높여줍니다.
반응형
'IT 소스 > MyBatis' 카테고리의 다른 글
[MyBatis] <set> - SET절에 동적으로 필드를 추가하거나 생략 (0) | 2024.02.07 |
---|---|
[MyBatis] <trim> - 특정 조건에 따라 부분적으로 SQL 코드를 생략 (0) | 2024.02.05 |
[MyBatis] <choose>, <when>, <otherwise> - 조건구문 (0) | 2024.02.03 |
[MyBatis] <if> - 조건을 만족하면 SQL 코드를 생성 (0) | 2024.02.02 |
[MyBatis] 변수 #{} 와 ${} 의 차이점? (0) | 2024.02.01 |