์ด์์๋ฒ์ ์ฌ๋ผ๊ฐ์๋ ์ฟผ๋ฆฌ๋ฌธ์ ์ดํด๋ณด๋ฉด where ์กฐ๊ฑด ์ ์ 1=1 ์ด ๋ง์ด ๋ถ์ด์์ด์.
์ฒ์์๋ ์ด๊ฒ ๋ญ์ง ์ด๊ฑธ ์ ์ฐ๋์ง ์ดํด๋ฅผ ๋ชปํ๋๋ฐ ํ๋ค๋ณด๋๊น ์ ์ฐ๋์ง ์๊ฒ ๋์ ์ ๋ฆฌํ๋ ค๊ณ ํด์.
1=1 ?
1=1 ์ด๋ผ๋๊ฑด ํญ์ ์ฐธ์ด๋ผ๋๊ฑธ ์๋ฏธํด์. ๊ธ๋ฉด ์ ์ด๋ฐ ํญ์ ์ฐธ์ด๋ผ๋ ์กฐ๊ฑด์ ์ฐ๋ ?
๋ค์ ๋ถ๋ ์กฐ๊ฑด๋ค์ด ๊ณ ์ ์ ์ผ๋ก ๋ถ์ง ์์ ๋ ์ฆ, ๋์ ์ผ๋ก ์กฐ๊ฑด์ ์ ๋ถ์ด๊ณ ์ถ์ ๋ ์์ฃผ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋์
์๋ฅผ๋ค๋ฉด ๊ฒ์๊ธฐ๋ฅ์ด ์์ด์
์ฌ์ฉ์๋ก๋ถํฐ ์ ๋ ฅ๋ฐ์ ํค์๋๊ฐ ์กด์ฌํ ๋์๋ง ๋ค์ ์กฐ๊ฑด์ ์ ๋ถ์ด๊ณ ์ถ์ ๋ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉ๋์ ( ์ ์ํฉ์ Spring Framework๊ธฐ๋ฐ mybatis๋ฅผ ์ฌ์ฉํ๋ ์ํฉ์ด์์ )
1
2
3
4
5
|
SELECT * FROM TB_TEST
WHERE 1=1
<if test="keyword != null and keyword != ''">
<![CDATA[ AND value LIKE CONCAT ('%', #{keywork}, '%') ]]>
</if>
|
cs |
์ ๋ฐ์์ผ๋ก AND๋ฅผ ์์ ๋ถ์ฌ์ ์กฐ๊ฑด์ ์ ๋์ ์ผ๋ก ๋๋ฆด ๋ WHERE 1=1์ ์์ฃผ ์ ์ฉํด์.
*์ถ๊ฐ(2021.09.27)
์ด ํฌ์คํ ์ ์ด ๊ฑด ๊ณต๋ถ ์์ํ์ง ์ผ๋ง ์๋์๋ ์ํฉ ๊ทธ๋ฆฌ๊ณ ์ด์ ์์ค๋ฅผ ์ ํ์ง ์ผ๋ง ์๋์์ ๋ ์ธ๋ฐ์. ๊ณต๋ถ๋ฅผ ํ๋ค๋ณด๋ ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์์ด์ ์ถ๊ฐ๋ก ์ ๋ฆฌํด์. WHERE 1=1๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ด์ฐ ๋์๊ฑด ์์ ์ฐ์ฐ์ผ์ง๋ผ๋ DB์๋ฒ์ ์๋ฏธ์๋ ์ฐ์ฐ์ ์ํค๋ ๊ฒ์ธ๋ฐ์. WHERE 1=1 ์์ด๋ mybatis๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ๊ฐ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ค ์ ์์ต๋๋ค. ๋ฐ๋ก <where> ํ๊ทธ๋ฅผ ์ฌ์ฉํ์๋ฉด ๋์.
SELECT * FROM TB_TEST
<where>
<if test="keyword != null and keyword != ''">
<![CDATA[ AND value LIKE CONCAT ('%', #{keywork}, '%') ]]>
</if>
</where>
์ฃผ์์ฌํญ์ <where> ํ๊ทธ ์ ์ Where ๋ฌธ์ด ์กด์ฌํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํด์. ์์ ์ฒ๋ผ ๋์ ์ผ๋ก ์์ฑ๋ ์๋ ์๊ณ ์๋ ์๋ ์๋ ์ฟผ๋ฆฌ๋ฅผ <where> ํ๊ทธ๋ก ๊ฐ์ธ์ฃผ๋ฉด ์์ฑ์ด ๋๋ค๋ฉด ์๋์ผ๋ก WHERE ๋ฌธ์ด ์์ฑ๋๊ณ ๋ง์ฝ ์์ฑ์ด ๋์ง ์๋๋ค๋ฉด WHERE๋ฌธ์ด ์์ฑ๋์ง ์์ต๋๋ค. WHERE 1=1 ์ฒ๋ผ ๋ถํ์ํ ์ฐ์ฐ์ด ์๋ ๊ฒ์ด์ฃ .
๋ค์์ mybatis์์ if , choose์ ๊ฐ์ ์กฐ๊ฑด๋ฌธ์ ์ด๋ป๊ฒ ํ์ฉํ ์ ์๋ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค.