Notice
Recent Posts
Recent Comments
Link
kimmgamjja
[Sql] Mybatis 샾(#{}) 과 달러(${}) 차이 본문
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