메이븐 프로젝트 코딩을 하던 중
여러개의 변수를 Map 에 담아
Mybatis Sqlmapper 를 이용하여
쿼리를 날려야 하는 작업이 있었습니다.
맵에 담긴 여러 변수 중
일부는 테이블 이름 혹은 컬럼 이름으로 매핑되고
일부는 WHERE 조건절 등의 변수로 사용해야하는데
일반적으로 사용하는 #{변수명} 으로 파라미터를 받아왔더니
Bad SQL 에러가 뜨는 것이었습니다.
한참을 헤메고 고민하다가 결국 선임개발자에게 질문을 했는데
너무나 명쾌하게 고민을 해결해주셔서
혹시나 같은 고민을 하시는 분들이 계실까봐
이렇게 포스팅을 하게 되었습니다.
Dao 에서 전달한 파라미터를
sqlmapper에서 받아오는 방법은
크게
${변수명}
와
#{변수명}
으로 나뉩니다.
$ 은 한마디로 말하면 상수값
즉 쿼리를 날릴 때 ' ' 에 들어가지 않는 값이고
# 은 변수값 즉 ' ' 안에 들어가는 값을 받아와서 자동으로 매핑시켜 줍니다.
예를 들어 보겠습니다.
PEOPLE
NAME | AGE | ADDRESS | PHONE |
홍길동 | 402 | 조선 | 019-123-4567 |
지엔키 | 99 | 비밀 | 010-1234-5678 |
아이유 | 27 | 서울 | 010-8765-4321 |
이런 테이블이 있을 때
이름이 '지엔키' 인 사람의 주소를 가져오려면
SELECT ADDRESS FROM PEOPLE WHERE NAME='지엔키';
가 되겠죠?
이 때
SQLMapper 에
SELECT ${columnName} FROM PEOPLE WHERE NAME=#{name}
이렇게 설정 을 해주면
sqlmapper 가 자동으로
$ 가 붙은 컬럼이름, 즉 상수에는 ' ' 를 붙이지 않고
# 가 붙은 변수 에는 ' ' 를 붙여 쿼리를 날리게 된다는 겁니다.
굉장히 간단하지만 꼭 필요한 걸
이제라도 알게되어서
혹시나 필요한 분들에게 도움이 되셨기를 바랍니다.
'개발 > 웹개발 기본가이드' 카테고리의 다른 글
스프링과 메이븐의 비유적 개념 (1) | 2019.10.14 |
---|---|
Jstl 변수 자바스크립트로 받아와서 사용하기 (0) | 2019.07.24 |
GIT 과 SVN의 개념 및 장단점 형상관리, 버전관리 (0) | 2019.05.02 |
MVC 패턴에 대하여 (0) | 2019.02.24 |
기본 태그 사용법 input type button, text, hidden, 버튼이벤트 value 가져오기 (0) | 2019.01.31 |