-
쿼리 결과값을 리턴받은 DTO를 가지고JSON구조 만드는 방법IT/개발 기록 2018. 10. 30. 20:08
JSON구조 만들기
환경구성
1. Cafe, Menu DTO
12345678910111213141516171819202122232425public class Cafe {private String cafe_Id;private String cafe_Nm;private String cafe_img_Nm;private String cafe_img_Dir;private int price;private String lunch_YN;private String dinner_YN;private String oper_Time;private String build_Addr;private String build_Nm;private String build_Tel;private String build_Home;private String build_Key;private double build_X;private double build_Y;private double build_Score;private String use_YN;private Menu menu_L;private Menu menu_D;}cs 12345678910111213141516171819202122public class Menu {private String cafe_Id;private String menu_Date;private String menu_Div;private String menu_img_Nm;private String menu_img_Dir;private String rice;private String soup;private String side_Dish1;private String side_Dish2;private String side_Dish3;private String side_Dish4;private String side_Dish5;private String side_Dish6;private String side_Dish7;private String side_Dish8;private String dessert1;private String dessert2;}cs 2. Cafe, Menu Table 각각의 결과값
Cafe : Menu = 1: M 구조
목표
목표로 하는 Json 구조
설명
1. 각각의 쿼리 결과를 List로 받는다
12345List<Cafe> lists = new ArrayList<Cafe>();lists = session.selectList("CafeteriaSqlMap.selectcafes");List<Menu> menu = new ArrayList<Menu>();menu = session.selectList("CafeteriaSqlMap.selectmenus");cs 2. 자신이 원하는 구조와 데이터로 예외처리를 걸어 1:M에서 1인 Cafe DTO에 담아준다
123456789101112for(int i=0; i<lists.size(); i++) {for(int j=0; j<menu.size(); j++) {if(lists.get(i).getCafe_Id().equals(menu.get(j).getCafe_Id())) {if("D".equals(menu.get(j).getMenu_Div())) {lists.get(i).setMenu_D(menu.get(j));}else if("L".equals(menu.get(j).getMenu_Div())) {lists.get(i).setMenu_L(menu.get(j));}}}}return lists;cs 3. 리턴받은 List<Cafe>를 json형식으로 출력해주는 다양한 방법을 통해 확인한다.
생각해 볼 부분
1.
회사에서는 dto를 만들지 않고 쿼리결과를 map으로 리턴받아 서비스단에서 가공하여 넥사크로 라이브러리를 통해 dataset구조로 넘기는데
dto를 만들어 처리를 해보자고 마음을 먹고 하려는데
'dto를 만들면 구조가 이미 정해져 있으니 One쿼리로 처리할 수 있지 않을까?'
라고 생각해 Cafe, Menu테이블 조인을 걸어 결과값을 리턴받아 처리하려고 했지만 구글에 많은 글을 봐도
그러한 내용은 나와있지 않았다... 방법이 없는건지...
1:M관계의 테이블 조인을 걸어 M관계가 되면 이 M의 결과를 dto구조와 맵핑해 자동으로 원하는 json형식으로 리턴!
시간이 생기면 다시 한번 공부해봐될것 같다.
2.
json결과를 menu_L과 menu_D의 객체를 각각 두는 아래처럼 하는게 목표였지만
1234567891011121314{"cafe_Id": "CAFE005","cafe_Nm": "구디식당005","menu_L": {"cafe_Id": "CAFE005","menu_Date": "20181023","menu_Div": "L",},"menu_D": {"cafe_Id": "CAFE005","menu_Date": "20181023","menu_Div": "D",}}cs 사실, 항상 menu상세는 2개씩 나오니 아래처럼 구조를 잡아도 된다이 데이터를 어떻게 활용할거냐? 의 맞춰 더 필요한 방법으로 만들면 될 것 같다.12345678910111213{"cafe_Id": "CAFE005","cafe_Nm": "구디식당005","menu": [{"cafe_Id": "CAFE005","menu_Date": "20181023","menu_Div": "L",},{"cafe_Id": "CAFE005","menu_Date": "20181023","menu_Div": "D",}]}cs 'IT > 개발 기록' 카테고리의 다른 글
[Java] Java에서 람다식으로 코딩을 하면? (0) 2018.11.25 [Spring] Junit을 사용하여 단위테스트(Spring-Test사용) (2) 2018.11.05 [RestApi] 서버개발하기 (Spring Legacy + myBatis + postgreSQL) (0) 2018.10.29 Tomcat 다운로드 및 설치 (0) 2018.10.14 [Spring] STS 다운로드/설치 및 기본설정 (0) 2018.10.14 댓글