๊ฐ์
๋ชฉ๋ก ์กฐํ๋ฅผ ํ๋๋ฐ, ์ฒซ ํ์ด์ง์ ๋์จ ์์ดํ ์ด ๋๋ฒ์งธ ํ์ด์ง์๋ ๋ ธ์ถ๋๋ ์ด์๊ฐ ์์๋ค.
(๊ณ ์ ํ ์์ดํ ์ด๋ฏ๋ก ํ๋ฒ๋ง ๋ณด์ฌ์ผ ํ๋ค.)
๋ํ ์ด์๋ฅผ ์ฌํํ๋ ๊ณผ์ ์์, 5๊ฐ, 10๊ฐ, 15๊ฐ์ฉ ๋ฑ ๋ณด๋๋ก ํ์ด์ง ์ฌ์ด์ฆ๋ฅผ ๋ณ๊ฒฝํ ๋๋ง๋ค ์์๊ฐ ๋ค๋ฅด๊ฒ ๋ ธ์ถ๋๋ ๋ฌธ์ ๋ ๋ฐ๊ฒฌํ์๋ค.
(์๋๋ 5๊ฐ -> 10๊ฐ ์ ํ ์ ์์ 5๊ฐ๋ ๋ณํจ์ด ์๊ณ ๋ฐ์ 5๊ฐ๊ฐ ์ถ๊ฐ๋๋ ์์ผ๋ก ์๋ํด์ผํ์ง๋ง ๊ทธ๋ฌ์ง ์์๋ ๊ฒ์ด๋ค.)
๋ฐฑ์๋ ์ฟผ๋ฆฌ๋ฅผ ํ์ธํด๋ณด๋, ์ ๋ ฌ ๊ธฐ์ค์ด NULL๊ฐ์ด๊ฑฐ๋ ์ค๋ณต๋ ๊ฐ์ผ ๋ ์ฒ๋ฆฌํด์ฃผ๋ ๋ก์ง์ด ์์ด, ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ํด๋น ๋ ์ฝ๋๋ค์ ์์์ ์์๋ก ๋ฐํํ๊ณ ์์ด ๋ฐ์ํ๋ ๋ฌธ์ ์๋ค.
๋ฌธ์ ์๋ MyBatis ์ฟผ๋ฆฌ
<when test='"statusDate" eq sortProperty'>
B.STATUS_DATE IS NULL ASC, B.STATUS_DATE ${sortDirection}, A.RECORD_LAST_UPDATED ${sortDirection}
</when>
<when test='"itemName" eq sortProperty'>
A.ITEM_NAME IS NULL ASC, A.ITEM_NAME ${sortDirection}
</when>
<otherwise>
B.STATUS_DATE IS NULL ASC, B.STATUS_DATE DESC, A.RECORD_LAST_UPDATED DESC
</otherwise>
statusDate์ itemName๋ ๊ณ ์ ํค๊ฐ ์๋๊ณ NULL๊ฐ๊ณผ ์ค๋ณต๋ ๊ฐ์ ํ์ฉํ๋ ์์ฑ์ด์๋ค.
statusDate๋ itemName๋ก ์ ๋ ฌ ์, NULL์ด๊ฑฐ๋ ์ค๋ณต๋ ๊ฐ๋ค์ ์ ๋ ฌํ ๋ ์์๊ฐ ๋๋ค์ผ๋ก ๋ฐํ๋๋ ๋ฌธ์ ๊ฐ ์๊ธด๋ค.
ํด๊ฒฐ๋ ์ฟผ๋ฆฌ
<when test='"statusDate" eq sortProperty'>
B.STATUS_DATE IS NULL ASC, B.STATUS_DATE ${sortDirection}, A.RECORD_LAST_UPDATED ${sortDirection}, A.ITEM_ID ASC
</when>
<when test='"itemName" eq sortProperty'>
A.ITEM_NAME IS NULL ASC, A.ITEM_NAME ${sortDirection}, A.ITEM_ID ASC
</when>
<otherwise>
B.STATUS_DATE IS NULL ASC, B.STATUS_DATE DESC, A.RECORD_LAST_UPDATED DESC, A.ITEM_ID ASC
</otherwise>
statusDate์ itemName์ด ์ค๋ณต๋ ๊ฐ์ด๊ฑฐ๋ NULL์ผ ๋๋ฅผ ๋๋นํ์ฌ, ๋๋ฒ์งธ ์ ๋ ฌ ๊ธฐ์ค์ผ๋ก ๊ณ ์ ํค์ธ ITEM_ID๋ฅผ ์ถ๊ฐํด์ฃผ์ด ํด๊ฒฐํ์๋ค.
์ด์ ๋ฐ๋ผ ์ ๋ ฌ์ ์์ ์ฑ์ ๋ณด์ฅํ ์ ์๋ค.