IBATIS/myBatis
2017.04.27 / 19:41

MyBatis parameter ¼³Á¤½Ã #, $ Â÷ÀÌÁ¡

Scoda
Ãßõ ¼ö 198

mybatis¸¦ »ç¿ëÇÏ´Ùº¸¸é SQL¹®À» ÀÛ¼ºÇÒ¶§ Àü´Þ¹ÞÀº parameter º¯¼ö¸¦ ÁöÁ¤ÇØÁÖ°Ô µÇ´Âµ¥
ÀϹÝÀûÀ¸·ÎÀ¸·Î #{º¯¼ö¸í} °ú °°Àº ¹æ½ÄÀ¸·Î ÀÛ¼ºÀ» ¸¹ÀÌ ÇÑ´Ù.

ÇÏÁö¸¸ mybatis¿¡¼­´Â #{º¯¼ö¸í} ÀÌ¿Ü¿¡µµ ${º¯¼ö¸í} ¹æ¹ýµµ »ç¿ëÇÒ¼ö ÀÖ´Ù. ÀÌ µÑÀÇ Â÷ÀÌÁ¡Àº ´ÙÀ½°ú °°´Ù.

1. #{º¯¼ö¸í}

<sql id="test" parameterType="hashmap">
    SELECT
        *
    FROM
        TB_member
    WHERE
        id = #{id}
</sql>



À§¿Í°°ÀÌ #{º¯¼ö¸í}À¸·Î »ç¿ëÇÏ°Ô µÇ¸é mybatis´Â preparedStatement °´Ã¼¿¡ ÀÚµ¿À¸·Î id¸¦ set ÇØÁÖ°Ô µÈ´Ù.
Áï SELECT * FROM TB_member WHERE id = ? Çü½ÄÀ¸·Î ÀüȯÀÌ µÇ°í ÀÚµ¿À¸·Î ÇØ´ç º¯¼ö¸¦ set ÇØÁØ´Ù.



2. ${º¯¼ö¸í}

<sql id="test" parameterType="hashmap">
    SELECT
        *
    FROM
        TB_member
    WHERE
        id = ${id}
</sql>


ÇØ´ç ¹æ½ÄÀ¸·Î ÁöÁ¤½Ã ÇØ´ç º¯¼ö°¡ Äõ¸®¿¡ Æ÷ÇÔÀÌ µÈ´Ù. Áï SELECT * FROM TB_member WHERE id = 'test' Çü½ÄÀ¸·Î SQLÀÌ ½ÇÇàµÈ´Ù. 
Ä÷³¸íÀ̳ª Å×À̺í¸íÀÌ µ¿ÀûÀ¸·Î º¯°æµÇ¾î¾ß ÇÒ¶§ »ç¿ëÇϸé ÁÁÀºµ¥, ÇØ´ç ¹æ¹ýÀÇ ÃÖ´ë ´ÜÁ¡Àº ¾ÇÀÇÀûÀ¸·Î parameter Á¶À۽à
º¸¾È¿¡ ¾ÈÀüÇÏÁö ¸øÇÏ´Ù´Â °ÍÀÌ´Ù. SQL Injection °ø°Ýµî¿¡ Ãë¾àÇÏ´Ù.


parameter º¯¼öµîÀº °¡±ÞÀûÀ̸é #{º¯¼ö¸í} °ú °°Àº ¹æ½ÄÀ¸·Î »ç¿ëÇϵÇ, ÇÊ¿ä¿¡ µû¶ó ${º¯¼ö¸í} ¹æ½ÄÀ¸·Î »ç¿ëÇصµ ³ª»ÚÁö´Â ¾Ê´Ù.
´Ù¸¸ »ç¿ëÀÚ Á¶ÀÛµîÀÇ Á¶ÀÛÀÌ °¡´ÉÇϹǷΠÄÚµå»ó¿¡¼­ º¯¼ö°ªµîÀ» ÄÁÆ®·ÑÇϴµîÀÇ ´ëÀÀÀÌ ÇÊ¿äÇÏ´Ù.



Ãâó: http://fruitdev.tistory.com/70 [°úÀÏ°¡°Ô °³¹ßÀÚ]