ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [iBatis/myBatis] #와 $의 차이점
    JSP 2016. 7. 15. 14:24
    1. #는 쿼리가 수행될 때, 다음과 같이 된다 

    SELECT * FROM USER 

    WHERE 
    col = ?  


    parameter : [값]


    ?에 bind된 값이 들어가게 된다. 

    이 쿼리의 컴파일 된 내용을 재사용 할 수 있고, 파라미터에 따라 대입해주므로 효율적이다.
    내부적으로 preparedStatement 객체에서 ? 에 들어갈 파라미터의 값을 set 해줌으로써 사용이 된다.
     
    preparedStatement는 한번 수행한 쿼리를 캐싱하는 객체


    사용 용도 >>

    #일 경우, 에 사용한다.

    myBatis : 컬럼명 = #{값}   
    iBatis : 컬럼명 = #값#

    * 쿼리에 작은 따옴표가 붙게 된다.


    2. $는 쿼리가 수행될 때, 다음과 같이 된다

    SELECT * FROM USER
    WHERE 
    col = 



    값이 넣어진 쿼리 자체로 수행이 된다.(상수)
    즉, 문장 전체가 preparedStatement가 된다.

    사용 용도 >>

    $일 경우는 컬럼명이 동적으로 바뀌어야 할 때 사용한다. 또는 테이블명.

    myBatis : ${컬럼명} = #{값}   
    iBatis : $컬럼명$ = #{값}

    * 쿼리에 작은따옴표가 붙지 않는다. 
    값에 $를 사용하면 스트링의 경우 작은따옴표로 감싸지지 않기 때문에 에러 발생한다.


    이렇게 사용하지 않으면 unknown column 이나 There is no readable property named  등등의 에러가 뜨게 된다


    'JSP' 카테고리의 다른 글

    EL 연산자  (0) 2016.08.29
    Listener 란?  (0) 2016.08.18
    EL에서 #과 $의 차이점  (0) 2016.07.15
    EL 줄바꿈처리  (0) 2016.07.05
    JSP에서 No-Cache 설정하는 방법  (1) 2016.03.16

    댓글

Designed by Tistory.