1=1 조건을 넣는 이유

myBatis 쿼리에서 1=1 조건을 넣는 이유

myBatis 쿼리문을 볼때, 가끔씩 where 1=1 이라는 조건을 볼 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<select id="getUserList" resultMap="userSelectMap">
SELECT TAG_ID,
CONT_ID,
TAG_STR,
TAG_USER
FROM RESUME
WHERE 1=1
<if test="!tagId.equals(''.toString())">
AND TAG_ID LIKE '%' || #{tagId:VARCHAR} || '%'
</if>
<if test="!tagName.equals(''.toString())">
AND TAG_NAME LIKE '%' || #{tagName:VARCHAR} || '%'
</if>
</select>

이렇게 if문에 들어가기전에 1=1이라는 조건을 줍니다.
만약 저 IF문에 아무것도 걸리지 않는다면, WHERE 키워드만 남게되어 에러가 나게 됩니다.
이렇게 IF문에 걸리지 않아도 SQL문에서 EXCEPTION이 나지 않게 하기 위하여,
1=1 조건을 줘서 EXCEPTION을 방지합니다.

Share