ex)
SELECT *
FROM user
WHERE name = 'kim'
AND phone = '01012345678'
위와 같이 조건이 2개인 질의문이 있을때 AND절의 phone번호가 01012345678이 맞는지 우선적으로 확인하고 싶다면 name='kim' 조건을 주석처리해야 하는데
ex)
SELECT *
FROM user
// WHERE name = 'kim'
AND phone = '01012345678'
이처럼 주석된 부분을 제외하고 보면 쿼리가 제대로 만들어지지 않습니다.
그러면 AND 부분까지 주석처리하고 WHERE을 추가해주어야하는데 SQL문이 조금만 더 복잡해지고 길어진다면 굉장히 귀찮아집니다.
그래서 WHERE 1=1 조건을 넣어주면서 이 부분을 해결해줍니다.
ex)
SELECT *
FROM user
WHERE 1=1
AND name = 'kim'
AND phone = '01012345678'
이렇게 쿼리를 작성하면 AND name = 'kim'을 바로 주석처리 해버려도 정상적으로 쿼리가 작동하기 때문에 편리해 집니다.
ex)
SELECT *
FROM user
< where >
< if test="phone != null and phone = ' ' " >
AND phone = '01012345678'
</ if>
< if test="name != null and name != ''">
AND name = 'kim'
</ if>
MyBatis에서는 where 태그를 이용하여 처리할 수 있습니다. 위와 같이 질의 조건에 따라 동적쿼리의 생성여부가 결정되는데 조건태그 if를 where 태그로 감싸서 생성을 한다면 MyBatis에서 자동으로 질의 조건에 따라 WHERE를 생성하거나 생략합니다. 즉, WHERE 1=1과 같은 처리를 하게 됩니다.