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

[Spring] 쇼핑몰 - 45 Map데이터 활용해서 월별 매출 페이지 조회

by 환풍 2023. 4. 13.
728x90

 

 

일단 SHOP_BUY 테이블에 데이터들을 pppp1234 아이디로 1월 2월 3월 4월 5월까지 여러개 넣었다.

 

AdminControlelr 컨트롤러

DB에 저장했던 대로 임의로 MENU_003을 model에 넣어주면서 주문 관리 메뉴의 서브메뉴로 등록해준다.

IntercepterConfig 인터셉터

이후 해당 컨트롤러 saleStatusPerMonth도 인터셉터에 저장시켜주었다.

sale_status_per_month.html

saleStatusPerMonth 컨트롤러에서 오게 되는 해당 페이지를 만들어주면 오른쪽과 같이 화면이 구성된다.


방법 1 resultMap과 VO를 사용해서 뽑기.

StatisticsVO, admin-mapper.xml

1월부터 12월까지 데이터가 저장될 객체 VO를 만들어주고, 쿼리문을 담기 위해 resultMap을 mapper에 만들어주었다.

 

admin-mapper.xml

admin-mapper에서 쿼리문을 담은 데이터 들이 각각 VO에 생성해준 변수 값에 저장된다.

adminService

인터페이스와 클래스에 각 list 조회해주는 쿼리를 생성해준다.

AdminController 컨트롤러

컨트롤러에서 adminService 에서 해당 쿼리문을 불러와 조회해보면 콘솔창에 뜨는 것과 같이 데이터들이 잘 들어가 있는 것을 확인해볼 수 있다. 그리고 뽑힌 데이터를 html에서 list라는 이름으로 던져줄거다.

sale_status_per_month.html

연속된 수를 반복하려면 ${#numbers.sequence(1,12)} 를 사용하면 1부터 12까지 뽑아줄 수 있다.

sale_status_per_month.html

이렇게 하면 데이터들을 뽑아올 수 있다.

 


방법 2 Map 사용해서 데이터 받아보자.

 

https://bright-landscape.tistory.com/171

 

자바(JAVA) - 컬렉션프레임워크 Map - 2

컬렉션 프레임 워크에는 대표적으로 List와 Map이있다. List -> 순번이 존재하고, 중복 데이터 등록 가능하다. https://bright-landscape.tistory.com/40 자바(JAVA) - 컬렉션프레임워크 ArrayList 컬렉션 프레임워크

bright-landscape.tistory.com

 

admin-mapper.xml

Map을 사용하게되면, resultMap과 방법1에서 만들었던 VO를 사용할 필요가 없어진다.

Admin Service

 

AdminController 컨트롤러

Map의 데이터를 mapList 변수로 저장해 자료형 List에 넣어주었다.

첫번째로, List로 데이터를 뽑기전, map에 있는 데이터를 뽑을 때, foreach로 반복시키는데

map 데이터를 뽑아올 때는 문자열 데이터를 여러개 들고올때 성질이 비슷한 Set을 들고 온다.

 

두번째 반복문이 실행될때,

자료형 Set에 담긴 데이터 keySet을 반복하여 출력되는 값이 최종적으로 List로 뽑히는 데이터 값이다.

콘솔창을 보게 되면,

key : MONTH_03 / value = 1
key : MONTH_04 / value = 27
key : MONTH_01 / value = 2

데이터가 현재 이런식으로 저장되어 있다. value 값들이 순서대로 정렬되지 않고 막무가내로 어지럽혀져있다.

sale_status_per_month.html

 

처음 반복되면 mapData는 map1이 된다.

그리고 다시 mamData를 가지고 key이름으로 출력하게 되는데 key 값의 value를 출력하면서 Map의 데이터가 출력된다.

단 , 콘솔에서 확인했듯이 데이터가 뒤죽박죽이 되면서 나오게 된다.

Map은 순번이 없기 때문에,  이렇게 자리가 엉뚱하게 찾아가면서 조회 된다.

HashMap -> 애초에 데이터를 넣을 때 한 곳에 넣는게 아니고,  중복되는지 안되는지 찾는다.

TreeMap -> 자동으로 오름차순 나온다.

AdminController 컨트롤러

따라서 컨트롤러에서 TreeMap을 데이터를 뽑기전에 만들어 주어 map1에 저장한다.

 

resultList를 List로 하나 만들어 주고, for문이 한번 반복될때, resultList에 TreeMap으로 생성된 map1을 넣는다.

그러면 데이터가 정렬된다.

resultList에는 map이 두번 반복되면서 나오기 때문에  정렬되서 나올 것이다. 마지막으로 resultList를 html에 던져준다.

 

 

반응형

댓글