kimmgamjja

[Sql] Mybatis 샾(#{}) 과 달러(${}) 차이 본문

공부/Sql

[Sql] Mybatis 샾(#{}) 과 달러(${}) 차이

인절미댕댕이 2025. 2. 21. 15:49
728x90

1. 샾 # 을 이용한 경우

<select id="test" resultType="String" parameterType="Map">
    SELECT NAME FROM USER WHERE ID = #{ID}
</select>

 

  • 다음과 같은 SELECT문을 작성하였을경우 아래와 같이 ? 에 파라미터가 바인딩 되어 수행된다. 이렇게 파싱된 쿼리문은 재활용(캐싱)되므로 효율적이다.
SELECT NAME FROM USER WHERE ID = ?

 

  • 또한 변수에 작은 따옴표(')가 붙어 쿼리가 수행되므로 '#{id}'라고 쿼리문을 작성할 필요가 없다.
  • 아래와 같이 사용할 수 없다. 아래와 같이 사용할 경우 USER_'tableName'이 되어버리므로 에러가 발생한다.
<select id="select" resultType="String" parameterType="Map">
    SELECT NAME FROM USER_#{tableName} WHERE ID = #{id}
</select>

2.  $를 이용한 경우

  • $를 이용하게 되면 파라미터값이 바뀔 때마다 새로운 쿼리문의 파싱을 진행해야해서 성능상 단점이 존재한다.
  • 또한 쿼리문에 #{}과 다르게 작은 따옴표(')가 붙지 않아서 테이블 이름이나 컬럼 이름을 동적으로 결정할때 사용할 수 있다. 
<select id="select" resultType="String" parameterType="Map">
    SELECT NAME FROM USER_${tableName} WHERE ID = #{id}
</select>

 

 


https://diqmwl-programming.tistory.com/76

 

[Mysql] #2. mybatis 샾(#{}) 달러(${}) 차이

1. 문법의 차이 #1) #을 이용한 경우 SELECT name FROM user WHERE id = #{id} 다음과 같은 SELECT문을 작성하였을경우 아래와 같이 ?에 파라미터가 바인딩 되어 수행된다 이렇게 파싱된 쿼리문은 재활용(캐싱)

diqmwl-programming.tistory.com

 

728x90