개발공작소
728x90

 

 

 

 

 

개발을 하면서 항상 #만 써서 $가 있는 줄 몰랐던 신입이 시절에 선임이 $가 있다는 것도 알려줬다.

둘의 차이점을 까먹은 김에 정리해본다..

 

 

마이바티스에서의 #{ }과 ${ }의 차이

 

1. #{ }의 특징

 

#{ }으로 감싸면 자동으로 파라매터 형태가 된다.
예들 들어 abc라는 값을 가져왔다고 하면 'abc'와 같이 따옴표가 붙고, 123이라는 값을 가져왔다고 한다면 따옴표가 

붙지 않은 123과 같이 된다.

1. 가져온 파라메터의 데이터 타입에 따라 따옴표(')가 붙기도 하고 붙지 않기도 한다. ( abc => 'abc' / 123 => 123 )
2. 주로 조건절(where)에서 컬럼값을 비교할때 자주 사용하게 된다.

 

 

샘플코드

SELECT id FROM test_table
WHERE name = #{name}
AND age = #{age}

 

결과

SELECT id FROM test_table
WHERE name = '홍길동'
AND age = 18

 

 

2. ${ }의 특징

 

1. 따옴표가 붙지 않는다. 

2. 따옴표가 붙지 않기 때문에 테이블명이나 컬럼명을 파라메터로 사용할 때 주로 쓰인다.

 

 

샘플코드

INSERT INTO ${schem}.${table_nm} (${column1}, ${column1}) values ('홍길동', 18);

 

결과

INSERT INTO public.test_table (name, age) values ('홍길동', 18);

 

이렇게 스키마, 테이블명, 컬럼명 등에 따옴표(')가 붙지 않는 걸 확인 할 수 있다.

 

만약 테이블명이나 컬럼명을 받아와 쓰는데, #을 쓰면 에러가 발생한다.

 

 

결론

value값에는 #을 사용하고, 테이블명, 컬럼명과 같은 곳에는 $를 사용하도록 하자!

 

 

 

728x90
profile

개발공작소

@모찌바라기

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!