데이터를 불러오기 위한 API개발이 많았다.

 

당연한 것이지만,

API개발시 고려해야 할 부분은 크게 2가지이었다.

 

1. 파라미터 값을 고려할 때에 지금 보내는 파라미터만으로도 원하는 데이터가 출력이 되는지를 고려

 

2. 화면흐름상 예를 들어 게시글 수정일 때에 가장 핵심이 되는 id(파라미터)외에 불필요한 파라미터가 있는지를 고려

 

사실 쿼리도 중요했지만, 이 파라미터를 던졌을 때 원하는 데이터 또는 값들이 나와야 하는 것이 핵심이었기에

기초적이지만 중요했던 고려사항 2가지이다..

첫 프로젝트는 비대면 컨벤션을 개발하는 프로젝트.

개발환경은 스프링부트, 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>

+ Recent posts