본문 바로가기
✨ Back-end/Spring-Boot

[Spring] 쇼핑몰 - 41 검색기능 추가하기

by 환풍 2023. 4. 12.
728x90
반응형

 

검색 버튼을 만들어 보려고한다.


cart_html

html에서 getBuyList 함수를 만들어 클릭하면 js에서 실행되도록 만들었다.

 

cart_buy.js

html에서 클릭되면 month라는 변수가 어떠한 이벤트로 실행되도록 코드를 만들어주었는데, month는 현재 없다.

SearchVO 생성, BuyVO extends

SearchVO에서 month를 하나 생성해주고, BuyVO에서 extends를 이용해서 상속해준다.

따라서 BuyVO에는 month에 대한 변수와 세터 ,게터, 투스트링 모두 사용할 수 있게 된다.

cart_buy.html

폼태그는 <input >이 끝난 이후 바로 닫아주자.  그리고 input의 type 속성도 hidden으로 바꾸었다.

버튼들이 클릭되면 0 , -1, -3이 전달되는데, 폼태크 선택한 후 id가 month-form인 태그를 변수로 지정해주고, 그 폼태그 안에있는 input태그를 선택하고, 그 value 값을 매개변수로 넘어온 month값을 주게된다.

0 , -1, -3이 들어간 다음 form태그를 submit 시킨다. 

즉, value 값에 데이터가 들어간 이후 submit되어 컨트롤러로 가게된다.

 

BuyController컨트롤러

getBuyList의 매개변수인 buyVO 자리에 원래 있던 loginInfo.getMemId()를 지워주고, 새로 채워넣어 준다.

getBuyList에 빨간줄이 뜨는데, 데이터 형식이 달라서 그렇다.

service

조회될 때 BuyVO로 변수 값이 조회되도록 쿼리 매개변수를 바꿔주었다.

 

DB에서 SYSDATE는 현재 날짜를 나타내는데, ADD_MONTHS는 현재 날짜에서 달을 추가하거나 뺄 수 있다.

현재 생성된 데이터에서는 시 분 초 모두 나오게 되므로, 

TO_CHAR속성을 이용해 년 월 일만 나오도록 쿼리문을 수정하였다.

 

buy-mapper.xml

서브메뉴에서 넘어온 month 값(Null)이 아니고, 전체 버튼을 눌렀을때( getBuyList(0))도 아니라는 것을

조건으로 주기 위해  <if test="month != null and month != 0"> 를 써주었다.

&gt;은 > 이다.

 

최근 1개월을 눌렀을 땐 쿼리에 month 에서 -1 결과가 조회되고,

최근 3개월을 눌렀을 땐 쿼리에 month 에서 -3 결과가 조회된다.


DateUtil  과 BuyContoller

Calendar는 생성자가 없다. 싱글톤 패턴으로 Calendar 매개변수를 하나 생서해주었고, 둘중 하나를 골라 쓰면된다.

DateUtill

이번달의 날짜를 컨트롤러에서 불러오기 위해 return 메소드를 하나 만들어주었다. 

BuyContoller

firstDate를 DateUtill 패키지에서 만들어 컨트롤러에 가져왔다.

 

SearchVO

serachVO에 fromDate와 toDate 변수를 만들었다.

BuyController 컨트롤러

cart_buy.html

이달의 첫날, 마지막날 값에 value 값을 추가해주었다.

 

BuyController 컨트롤러

 

buyVO는 커맨드 객체라서, 컨트롤러로 넘어올때, fromDate로 데이터가 넘어온다. 자동으로 buyVO안에 있는 fromDate안에 데이터가 들어간다. 그때는 fromDate가 널이 아니다. 

 

이 컨트롤러로 넘어올떄 FromDate, toDate로 가져온게 없다. 그때는 널이다.  따라서, 검색 버튼을 눌렀을 때만 toDate, fromDate를 넘겨줄 수 있다. 그래서 그때만 컨트롤러에서 지정해준 값을 세팅해주지 않겠다는 의미로 if문을 주었다.

 

cart_buy.html

검색 버튼을 눌렀을때 form태그로 감싸서 name 값들을 가지고 가줘야하는데, formDate와 toDate에 name 값을 지정했다.

buy-mapper.xml

검색 버튼을 누르면 위에있는 if문은 null값이라 실행이 되지 않는다.

&gt; 는 >  &lt; 는 <

컨트롤러에서 쿼리문이 실행되고 나서 if문으로 null값을 체크해줘야 하므로 순서를 바꿔주었다.

 

 

이런식으로 나는 2023-04-11일 이후부터 장바구니에 상품을 담았기 때문에 상품목록이 뜨지 않았다.

728x90
반응형

댓글