MyBatis parameter ¼³Á¤½Ã #, $ Â÷ÀÌÁ¡
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 [°úÀÏ°¡°Ô °³¹ßÀÚ]