프로그래밍/스프링[Spring]
[Spring] Datepicker 사용시 Mybatis 에서 날짜 기간 검색(Mysql)
yohoi
2022. 12. 14. 21:39
안녕하세요 오늘은 Datepicker 사용 시 Mybatis에서 기간을 조회하는 방법에 대해 다뤄 보겠습니다.
사용한 DB는 Mysql입니다.
우선 datepicker의 스크립트 부분입니다.
$(function(){
$('.datepicker').datepicker({
startDt: new Date('2022'),
calendarWeeks: false,
todayHighlight: true,
autoclose: true,
format: "yyyy-mm-dd",
language: "ko"
});
});
구현한 부분은 다음과 같습니다.
<div class="row">
<div class="input-group">
<input type="text" id="startDt" class="form-control datepicker startDt" placeholder="시작날짜" name="startDt">
<label class="input-group-text" for="startDt" ><i class="fa-solid fa-calendar" ></i></label>
</div>
<div class="text-center" style="font-size: x-large;">~ </div>
<div class="input-group">
<input type="text" id="endDt" class="form-control datepicker endDt" placeholder="종료날짜" name="endDt">
<label class="input-group-text" for="endDt" ><i class="fa-solid fa-calendar" ></i></label>
</div>
</div>
VO는 다음과 같이 String으로 선언합니다.
VO를 String으로 하면 Mybatis에서 Date로 변환하여 날짜 검색이 가능합니다.
//검색 시작 날짜
private String startDt;
//검색 종료 날짜
private String endDt;
Mybatis는 다음과 같이 사용합니다
+1을 한 이유는 예를 들어
22.12.14~ 22.12.14 인경우 14일에 등록된 날짜를 포함하기 위해 +1을 하였습니다. String에서 본인이 선언한 Format에 맞게 입력합니다.
<if test='startDt !=null and startDt !=""'>
<![CDATA[
AND REG_DT >= STR_TO_DATE(#{startDt},'%Y-%m-%d')
]]>
</if>
<if test='endDt !=null and endDt !=""'>
<![CDATA[
AND REG_DT < STR_TO_DATE(#{endDt},'%Y-%m-%d')+1
]]>
</if>
Mysql에서 Beetween을 이용하여 검색하는 방법도 있지만
위와 같이 작성하는 게 사용하기도 편하고 성능에서도 좋은 부분이 있다고 합니다.
감사합니다.