양치치의 아카이브

where 1 = 1 본문

코린이의 데이터베이스 일기장

where 1 = 1

넥타르 2022. 7. 6. 10:28

쿼리 작성시 where 조건절 뒤에 추가로 조건절이 붙을때 특히 동적쿼리문 작성시 if 조건절이 들어 갈때

가독성과 흐름파악이 용이하다.

예를들어 나이가 20 살 이상이고 작성자 아이디로 검색하는 동적 쿼리문을 작성 할시

select * from TABLE

where AGE >= 20

AND <if test="조건 : select = title">

TITLE LIKE '%' || #{keyword} || '%'

</if>

 <if test="조건 : select = writer">

WRITER LIKE '%' || #{keyword} || '%'

</if>

 

이 쿼리를 where 1 = 1 을 사용하면

 

select * from TABLE where 1 = 1

where AGE >= 20 AND

<if test="조건 : select = title">

TITLE LIKE '%' || #{keyword} || '%'

</if>

 <if test="조건 : select = writer">

WRITER LIKE '%' || #{keyword} || '%'

</if>

 

비슷한 원리로 OR 조건절에서는 where 1 = 0 을 사용해서 아무것도 없는상태에서 or 구문 추가.

 

훨씬 보기쉽고 간결하다 . 주석처리시에도 용이해지고 

또한 조건으로 null 체크를 할 수도 있어서 동적 SQL을 만들기에 간편하다.

동적쿼리, 조건 절 많아 질 때 selecte문에 사용시 유용한것 같다.

편리한점도 있는 반면 예외의 위험성도 존재하니

null 처리, 예외 처리 주의 하고 

update, delete 문에서는 되도록 쓰지말자.

 

Comments