배열로 파일 넘기기 (updatebatch)

이태규·2022년 3월 13일
0

spring

목록 보기
15/64
@PostMapping(value = "/update")
    public String Postupdate(
            Model model,
            @RequestParam(name = "title") String[] title,
            @RequestParam(name = "price") long[] price,
            @RequestParam(name = "writer") String[] writer,
            @RequestParam(name = "category") String[] category,
            @RequestParam(name = "chk") long[] code) {

        int count = 0;
        for (int i = 0; i < code.length; i++) {
            Book book = new Book();
            book.setTitle(title[i]);
            book.setPrice(price[i]);
            book.setWriter(writer[i]);
            book.setCategory(category[i]);
            book.setCode(code[i]);
            int ret = bookDB.updateBatchBook(book);
            count = count + ret;
        }
        System.out.println(count);
        if (count == code.length) {
            model.addAttribute("msg", "일괄수정 되었습니다");
            model.addAttribute("url", "/admin/selectlist");
            return "alert";
        }
        model.addAttribute("msg", "일괄수정 실패했습니다");
        model.addAttribute("url", "/admin/selectlist");
        return "alert";
    }
@RequestParam(name = "title") String[] title 

과 같이 배열로 넘긴다.

1번 방법 반복문을 통해 새로운 배열을 만들고, 하나씩 넘기고 수정시키는 과정을 반복한다.

for (int i = 0; i < code.length; i++) {
            Book book = new Book();
            book.setTitle(title[i]);
            book.setPrice(price[i]);
            book.setWriter(writer[i]);
            book.setCategory(category[i]);
            book.setCode(code[i]);
            int ret = bookDB.updateBatchBook(book);
            }
@Override
    public int updateBatchBook(Book book) {
        try {

            Query query = new Query();
            query.addCriteria(Criteria.where("_id").is(book.getCode()));

            Update update = new Update();
            update.set("title", book.getTitle());
            update.set("price", book.getPrice());
            update.set("writer", book.getWriter());
            update.set("category", book.getCategory());

            UpdateResult result = mongoDB.updateFirst(query, update, Book.class);
            if (result.getMatchedCount() == 1L) {
                return 1;
            }

            return 0;
        } catch (Exception e) {
            e.printStackTrace();
            return -1;
        }

2번 방법 반복된 리스트를 들고가서 컨트롤러에서 바꾸기

List <Book> list = new ArrayList<>();
for(int i =0; i<code.length; i++){
	Book book - new Book()
    book.setTitle(title[i]);
    book.setPrice(price[i]);
    book.setWriter(writer[i]);
    book.setCategory(category[i]);
    book.setCode(code[i]);
    
    list.add(book);
}
long ret = bookDB.updateBatchBook(list)
@Override
    public int updateBatchBook(List<Book> book) {
        try {
			long updateCount = 0;
            for(Book tmmp : list){
              Query query = new Query();
              query.addCriteria(Criteria.where("_id").is(book.getCode()));


              Update update = new Update();
              update.set("title", book.getTitle());
              update.set("price", book.getPrice());
              update.set("writer", book.getWriter());
              update.set("category", book.getCategory());

              UpdateResult result = mongoDB.updateFirst(query, update, Book.class);
              updateCount += result.getMathchedCount();
              
            if (updateCount == list.size()) {
                return 1;
            }

            return 0;
        } catch (Exception e) {
            e.printStackTrace();
            return -1;
        }

반복을 DB에서 하냐 controller에서 하냐의 차이

profile
한 걸음씩 나아가자

0개의 댓글