Spring

Spring 일지 #51 (20211005) 일괄 추가 2

uni5948 2021. 10. 6. 12:52

51. 일괄 추가 2

-일괄 추가 2

 */seller/item_insert1 추가(SellerController.java)

 *@RequestBody 를 사용했으므로 포스트맨에서 json 타입을 사용한다.

 

package com.example.controller;

더보기

 

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

 

import com.example.entity.Item;

import com.example.entity.Member;

import com.example.jwt.JwtUtil;

import com.example.service.ItemServiceImpl;

import com.example.service.MemberService;

 

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.http.MediaType;

import org.springframework.web.bind.annotation.RequestBody;

import org.springframework.web.bind.annotation.RequestHeader;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.RestController;

 

@RestController

@RequestMapping(value = "/api")

public class SellerController {

 

    @Autowired

    MemberService mService;

 

    @Autowired

    ItemServiceImpl iService;

 

    @Autowired

    JwtUtil jwtUtil;

 

    // 127.0.0.1:8080/REST/api/seller/item_insert

    // {name:'a'}

    @RequestMapping(value = "/seller/item_insert"method = {

            RequestMethod.POST }, consumes = MediaType.ALL_VALUEproduces = MediaType.APPLICATION_JSON_VALUE)

    // [{"name":,"content":, "price": "quantity":}, { }, { }]

    public Map<StringObjectitemInsertPOST(@RequestParam("name"String[] name,

            @RequestParam("content"String[] content, @RequestParam("price"Long[] price,

            @RequestParam("quantity"Long[] quantity, @RequestHeader("token"String token) {

 

        Map<StringObjectmap = new HashMap<>();

        try {

            // 판매자 이메일 가져오기

            String email = jwtUtil.extractUsername(token);

            // 위에서 받은 값을 list로 변환

            List<Itemlist = new ArrayList<>();

            for (int i = 0i < name.lengthi++) {

                Item item = new Item();

                item.setName(name[i]);

                item.setContent(content[i]);

                item.setPrice(price[i]);

                item.setQuantity(quantity[i]);

 

                Member member = mService.getMemberOne(email);

                item.setMember(member);

                list.add(item);

            }

            // 일괄추가

            // iService.insertBatch(list); // 방법 1

            // iService.insertBatch1(list); // 방법 2

            iService.insertBatch2(list); // 방법 3

            map.put("status"200);

        } catch (Exception e) {

            // e.printStackTrace();

            map.put("status"hashCode());

        }

        return map;

    }

 

    // 127.0.0.1:8080/REST/api/seller/item_insert1

    // {name:'a'}

    @RequestMapping(value = "/seller/item_insert1"method = {

            RequestMethod.POST }, consumes = MediaType.ALL_VALUEproduces = MediaType.APPLICATION_JSON_VALUE)

    // [{"name":,"content":, "price": "quantity":}, { }, { }]

    public Map<StringObjectitemInsert1POST(@RequestBody List<Itemlist, @RequestHeader("token"String token) {

 

        Map<StringObjectmap = new HashMap<>();

        try {

            // 판매자 이메일 가져오기

            String email = jwtUtil.extractUsername(token);

            for (Item item : list) {

                Member member = mService.getMemberOne(email);

                item.setMember(member);

            }

            // 일괄추가

            iService.insertBatch(list); // 방법 1

            // iService.insertBatch1(list); // 방법 2

            // iService.insertBatch2(list); // 방법 3

            map.put("status"200);

        } catch (Exception e) {

            // e.printStackTrace();

            map.put("status"hashCode());

        }

        return map;

    }

}

 

 *일괄 추가

 *@RequestBody 를 사용했으므로 포스트맨에서 json 타입을 사용한다.

 *추가 후 h2-console에서 확인한다.

추가 성공
추가 확인