첫 프로젝트는 비대면 컨벤션을 개발하는 프로젝트.
개발환경은 스프링부트, MariaDB, Mybatis 이었다.
최고관리자, 관리자, 바이어, 셀러에 따라 다르게 데이터를 조회하는 부분이 있었고
공통으로 데이터를 조회하는 부분을 위해 적용한 동적쿼리가 주 업무이었다.
먼저 정적쿼리와 동적쿼리 간단하게 차이점 부터 보자.
정적쿼리(Static SQL)
-어떤 조건 또는 상황에도 변경되지 않으면 정적쿼리
동적쿼리(Dynamic SQL)
-특정 조건들이나 상황에 따라 변경되면 동적쿼리
검색해서 컨벤션 관련 데이터 가져오는 동적쿼리를 작성하는 2가지 방법 중에 후자로 적용했다.
무조건적일 때보다 flexible하기 때문에 선택적으로 데이터가 검색이 가능한 if문이 동반된 동적쿼리를 적용했다.
1. 무조건적으로 시작일 종료일에 해당되는 조건을 통해서 검색이 가능하도록 표기
<sql id="sql_select컨벤션">
SELECT *
FROM 컨벤션테이블
WHERE 컨벤션아이디 = #{컨벤션아이디}
AND 컨벤션시작일 BETWEEN {컨벤션시작일} AND {컨벤션종료일}
--컨벤션 시작일 및 종료일 사이에 시작일만 가져오는 쿼리
AND 컨벤션종료일 BETWEEN {컨벤션시작일} AND {컨벤션종료일}
--컨벤션 시작일 및 종료일 사이에 종료일만 가져오는 쿼리
ORDER BY 컨벤션등록일 DESC, 컨벤션업데이트일DESC
</sql>
2. 선택적으로 시작일 종료일에 해당되는 조건을 통해서 검색이 가능하도록 표기를 해주는 쿼리문
<sql id="sql_select컨벤션">
SELECT *
FROM 컨벤션테이블
WHERE 컨벤션아이디 = #{컨벤션아이디}
<if test="@패키지명@isNotEmpty(컨벤션아이디)">
AND 컨벤션시작일 BETWEEN {컨벤션시작일} AND {컨벤션종료일}
</if>
//선택적으로 컨벤션 시작일 및 종료일 사이에 시작일만 검색해서 가져오는 쿼리
`
<if test="@패키지명@isNotEmpty(컨벤션아이디)">
AND 컨벤션종료일 BETWEEN {컨벤션시작일} AND {컨벤션종료일}
</if>
//선택적으로 컨벤션 시작일 및 종료일 사이에 종료일만 검색해서 가져오는 쿼리
ORDER BY 컨벤션등록일DESC, 컨벤션업데이트일DESC
</sql>
'개발자로 취업후 > SQL' 카테고리의 다른 글
데이터 출력을 위한 파라미터를 보내기전에 (0) | 2021.07.20 |
---|