같은 기능이지만 다른 정책을 봐야하는 경우
조회 시 사용하는 쿼리 형태는 같으나 테이블, 컬럼명이 달라지는 경우가 있다.
이때 정책에 따라 사용하는 테이블, 컬렴명을 미리 정의해두고, 쿼리의 인자로 넘겨서 쿼리를 재사용할 수 있다.
개발 환경은 MariaDB, MyBatis와 SpringBoot 이다.
1. 미리 enum 으로 조건에 따라 조회 시 사용하는 테이블명, 컬럼명, 코드 등을 정의해놓는다
2. 쿼리 작성 시 #{}, ${} 를 사용한다
#{} 에 문자열을 넣으면 '문자열' 이렇게 변환이 된다.
${} 에 문자열을 넣으면 그대로 문자열이 변환된다.
어떻게 가능한가?
PrepareStatement에는 보통 변수를 설정하고 바인딩하는 static sql이 사용되고,
Statement에서는 쿼리 자체에 조건이 들어가는 dynamic sql 이 사용된다.
보통 Statement는 SQL Injection이 발생할 수 있다고 하지만, 이를 이용해서 쿼리 구조를 동적으로 변경할 수 있다!
'Database > mariaDB' 카테고리의 다른 글
| MyBatis 참고사항(XML 파일 관련) (0) | 2024.05.29 |
|---|