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<Item> list) {
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_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
// [{"name":,"content":, "price": "quantity":}, { }, { }]
public Map<String, Object> itemInsertPOST(@RequestParam("name") String[] name,
@RequestParam("content") String[] content, @RequestParam("price") Long[] price,
@RequestParam("quantity") Long[] quantity, @RequestHeader("token") String token) {
Map<String, Object> map = new HashMap<>();
try {
// 판매자 이메일 가져오기
String email = jwtUtil.extractUsername(token);
// 위에서 받은 값을 list로 변환
List<Item> list = new ArrayList<>();
for (int i = 0; i < name.length; i++) {
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
*이 방법으로 추가하면 등록일자가 모두 동일한 것을 확인할 수 있다.
'Spring' 카테고리의 다른 글
Spring 일지 #52 (20211005) 일괄 수정 (0) | 2021.10.06 |
---|---|
Spring 일지 #51 (20211005) 일괄 추가 2 (0) | 2021.10.06 |
Spring 일지 #49 (20211005) 일괄 추가1-2 (0) | 2021.10.06 |
Spring 일지 #48 (20211005) 일괄 추가1-1 (0) | 2021.10.06 |
Spring 일지 #47 (20211005) 비밀번호 변경 (0) | 2021.10.05 |