๊ฐœ๋ฐœ.log/framework

[Mybatis] XMLํƒœ๊ทธ <choose>, <when>, <otherwise>๋กœ ๋™์ ์ฟผ๋ฆฌ Dynamic SQL ๊ตฌํ˜„ํ•˜๊ธฐ

๊ฐœ๋ฐœํ•˜๋Š” ์ฃผ๋””์”จ 2022. 11. 23. 23:36


์ž๋ฐ” ์ธํ„ฐํŽ˜์ด์Šค Mapper๋ฅผ ํ†ตํ•ด ์ฟผ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ, ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ฐ”์ธ๋”ฉํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ๋” ํšจ์œจ์ ์ธ ์ฟผ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์™œ๋ƒ๋ฉด... ์ˆ˜์ •ํ•  ๋•Œ ํ•˜๋‚˜ ๋ฐ”๊พธ๋ฉด ๋‹ค ๋ฐ”๋€Œ๋Š” ๊ฒŒ ์ข‹์ž–์•„์š”? ๊ฐœ๋ฐœ์ž๋Š”... ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๋ฐ˜๋ณตํ•˜์ง€ ์•Š์ง€ :)

 

๊ตฌ์กฐ ๋ฐ ์‚ฌ์šฉ๋ฒ•
<choose>
	<when test="์กฐ๊ฑด์‹1"> ์ฟผ๋ฆฌ1 </when>
    	<when test="์กฐ๊ฑด์‹2"> ์ฟผ๋ฆฌ2 </when>
    	<when test="์กฐ๊ฑด์‹3"> ์ฟผ๋ฆฌ3 </when>
    	<when test="์กฐ๊ฑด์‹4"> ์ฟผ๋ฆฌ4 </when>
	<otherwise> ์ฟผ๋ฆฌ5 </otherwise>
</choose>

 

<choose> ํƒœ๊ทธ๋Š” <when> ํƒœ๊ทธ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋ฉฐ, ์กฐ๊ฑด์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์‹คํ–‰ ์‹œ <when> ํƒœ๊ทธ์˜ ์กฐ๊ฑด์‹์„ ์ˆœ์„œ๋Œ€๋กœ ํ™•์ธํ•˜๋ฉฐ ์ฟผ๋ฆฌ๋ฌธ์„ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค. ๋งŒ์•ฝ <when> ํƒœ๊ทธ์˜ ์กฐ๊ฑด ์‹์ค‘ true ๋ฐ˜ํ™˜ํ•œ ๊ฒƒ์ด ์—†๋‹ค๋ฉด <otherwise> ํƒœ๊ทธ ๋‚ด์— ์ž‘์„ฑ๋œ ์ฟผ๋ฆฌ๋ฌธ์ด ์‹คํ–‰๋œ๋‹ค. <otherwise> ํƒœ๊ทธ๋Š” ์ƒ๋žต ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

์ ์šฉ ์˜ˆ์ œ XML
<mapper namespace="com.tistory.mybatisStudy.dao.studyDao">
	<select id="selectABCD" parameterType="hashMap" resultType="com.tistory.judy.do.util.FrwMap">
		<![CDATA[
                SELECT /*SQL_ID : com.tistory.mybatisStudy.dao.studyDao.selectABCD(mybatis_Judy)*/
                        code_exam1
                        , code_exam2
                        , code_exam3
                    FROM JUDY_TABLE
                    WHERE BASE_YMD = #{BASE_YMD}
		]]>
        	<choose>
                    <when test = 'SEL_CD != null and SEL_CD == "01"'>
                        AND TISTORY_CODE = '*'
                    </when> 
                    <when test = 'SEL_CD != null and SEL_CD == "02"'>
                        AND TISTORY_CODE = '1'
                    </when>
                    <otherwise> 
                    	AND TISTORY_CODE = '0'
                    </otherwise>
            	</choose>
		ORDER BY BASE_YMD
</mapper>

 

 

MyBatis <if>ํƒœ๊ทธ์™€ ๋น„๊ตํ•ด๋ณด๊ณ 
 <choose>...<when>ํƒœ๊ทธ ์ดํ•ดํ•˜๊ธฐ

 

๋‘ ๊ฐ€์ง€ ํƒœ๊ทธ์˜ ์—ญํ• ์€ ํ•ด๋‹นํ•˜๋Š” ์กฐ๊ฑด๋ฌธ์ด ์žˆ๋‹ค๋Š” ์ ์—์„œ ๋™์ผํ•˜๋‹ค. ํ•˜์ง€๋งŒ ์กฐ๊ฑด์‹์„ ํƒ์ƒ‰ํ•˜๋Š” ๊ณผ์ •์—์„œ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

<if>ํƒœ๊ทธ :  ์กฐ๊ฑด์‹์ด true์ผ ๊ฒฝ์šฐ, ๋‹ค์Œ ์กฐ๊ฑด์‹์„ ํƒ์ƒ‰ํ•˜์—ฌ true์ธ ์กฐ๊ฑด์‹ ๋ชจ๋‘๋ฅผ ์‹คํ–‰. 
<choose>ํƒœ๊ทธ : ์กฐ๊ฑด์‹์ด true์ผ ๊ฒฝ์šฐ, ๋‹ค์Œ ์กฐ๊ฑด์‹์„ ํƒ์ƒ‰ํ•˜์ง€ ์•Š๊ณ  ํ•˜๋‚˜์˜ ์ฟผ๋ฆฌ๋งŒ ์‹คํ–‰.

 

 


โš™๏ธReference : https://mybatis.org/mybatis-3/ko/sqlmap-xml.html

 

MyBatis – ๋งˆ์ด๋ฐ”ํ‹ฐ์Šค 3 | ๋งคํผ XML ํŒŒ์ผ

Mapper XML ํŒŒ์ผ ๋งˆ์ด๋ฐ”ํ‹ฐ์Šค์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์€ ๋งคํ•‘๊ตฌ๋ฌธ์ด๋‹ค. ์ด๊ฑด ๊ฐ„ํ˜น ๋งˆ๋ฒ•์„ ๋ถ€๋ฆฌ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜ ์žˆ๋‹ค. SQL Map XML ํŒŒ์ผ์€ ์ƒ๋Œ€์ ์œผ๋กœ ๊ฐ„๋‹จํ•˜๋‹ค. ๋”๊ตฐ๋‹ค๋‚˜ ๋™์ผํ•œ ๊ธฐ๋Šฅ์˜ JDBC ์ฝ”๋“œ์™€ ๋น„๊ตํ•˜๋ฉด

mybatis.org