Spring

Spring 일지 #50 (20211005) 일괄 추가1-3

uni5948 2021. 10. 6. 12:41

50. 일괄 추가 1-3

-일괄추가 방법3

 *서비스(insertBatch1) 추가(ItemServiceImpl.java)

... ...

    // DML SQL문 (추가, 삭제, 수정, 조회) CRUD

    // INSERT INTO 테이블명(칼럼명) VALUES(추가할 값) *공백도 필요함

    // DELETE FROM 테이블명 WHERE 조건

    // UPDATE 테이블명 SET 칼럼명=변경값, 칼럼명=변경값 WHERE 조건

    // SELECT * FROM 테이블명

    // 일괄등록 방법3(SQL)

    public void insertBatch2(List<Itemlist) {

        EntityManager em = emf.createEntityManager();

        em.getTransaction().begin(); // 트랜젝션 시작

 

        // Item은 엔티티의 클래스명

        // INSERT INTO 테이블명(칼럼명) VALUES(추가할 값)

        String sql = " INSERT INTO Item(NO, NAME, CONTENT, " + " PRICE, QUANTITY, REGDATE, SELLER_ID) "

                + " VALUES(SEQ_ITEM_NO.NEXTVAL, :name, :content, " + " :price, :quantity, "

                + " CURRENT_TIMESTAMP, :member) ";

        for (Item item : list) {

            em.createNativeQuery(sql).setParameter("name"item.getName()).setParameter("content"item.getContent())

                    .setParameter("price"item.getPrice()).setParameter("quantity"item.getQuantity())

                    .setParameter("member"item.getMember().getEmail()).executeUpdate();

        }

        em.getTransaction().commit();

    }

}

 

 *insertBatch2 추가 (SellerController.java)

 

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;

    }

}

 

 *일괄 추가3

 *이 방법으로 추가하면 등록일자가 모두 동일한 것을 확인할 수 있다.

일괄 추가3
추가 성공