트레이닝

12. SellerDB (Map)

Romenest 2021. 8. 31. 09:50

수정, 보안

판매자 한명조회, 해당판매자의 물품까지 조회

Map 사용

 

    // 리턴이 object
    public Seller selectSellerOne(Seller seller) throws Exception {
        
        //sellerCollection.find(Filters.eq("_id",seller.getSel_id()));
        
        //Bson은 find를 없애면서 추가해야함, 이값은 eq.의 속성 crtl+space로 확인가능
        Bson queryBson = Filters.eq("_id",seller.getSel_id());
        //넘어오는 값 seller의 _id 와 동일 해야한다는 조건
        Bson sortBson  = Filters.eq("_id",1);

        MongoCursor<Document> cursor = sellerCollection.find(queryBson).sort(sortBson).iterator();
        
        if(cursor.hasNext()){  //cursor에 내용이 있다면 변환시킨 값인 retSeller를 조회
            Document doc = cursor.next();
            // Document -> Seller객체로 변환시켜 전송해야만 정상적으로나옴

            //변환할 Seller 틀 생성
            Seller retSeller = new Seller();

            //doc에 있는걸 빼서 retSeller에 넣어주면됨
            //setSel_id 속성을 보면 long속성이 필요 따라서 doc의 getLong과 키인 _id 입력
            retSeller.setSel_id(doc.getLong("_id"));
            retSeller.setName(doc.getString("name"));

            //판매자의 물품까지도 보이게 해야함 = setList기능
            //물품은 List<Item>타입 setList의 반환값을 보면 확인가능 
            //retSeller.setList(ItemDB.getInstance().selectItemWhere(seller)) 이랬던게 아래 형식으로 전환
            List<Item> itemList = ItemDB.getInstance().selectItemWhere(seller);
            
            //물품목록은 ItemDB에서 찾으면됨
            //ItemDB에서 판매자정보에 해당하는 물품만 반환하는 기능 호출

            retSeller.setList(itemList);

            return retSeller;
        }
        return null;
    }

    //판매자 1명 조회 : 리턴이 map
    // Map == seller    1명을 조회해서 리턴되는 값
    // 목록으로 할때는 List<Seller>로 목록을 받음
    // List<Seller> == List<Map<String,Object>> 여러명이 리턴됨
    // Map 자체를 하나의 오브젝트로 보면됨
   public Map<String, Object> selectSellerOneMap(Seller seller) throws Exception {
        // 조건
        Bson queryBson = Filters.eq("_id", seller.getSel_id());
        MongoCursor<Document> cursor = sellerCollection.find(queryBson).iterator();
        if (cursor.hasNext()) {
            Document doc = cursor.next();
            // Document 타입을 Map타입으로 전환

            Map<String, Object> mapSeller = new HashMap<String, Object>();
            // Map은 put을 이용해 데이터 입력, get,set이 아니다
            mapSeller.put("_id", doc.getLong("_id"));
            mapSeller.put("name", doc.getLong("name"));

            List<Item> itemList = ItemDB.getInstance().selectItemWhere(seller);
            mapSeller.put("itemList", itemList);
            return mapSeller;

        }
        return null;
    }
   
     // 판매자 전체조회 Map 사용
    public List<Map<String, Object>> selectSellerMap() throws Exception {
        Bson sortBson = Filters.eq("_id", -1);
        MongoCursor<Document> cursor = sellerCollection.find().sort(sortBson).iterator();
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();

        while (cursor.hasNext()) {
            Document doc = cursor.next();
            // document -> Map<String,object> 타입으로 변환

            Map<String, Object> map = new HashMap<String, Object>();
            map.put("_id", doc.getLong("_id"));
            map.put("name", doc.getString("name"));

            Seller seller = new Seller();
            seller.setSel_id(doc.getLong("_id"));

            List<Item> itemlist = ItemDB.getInstance().selectItemWhere(seller);

            map.put("itemlist", itemlist);

            list.add(map);
        }
        return list;

    }
}