[Spring] 도서 수정, 삭제

0. 출처

아직 배우고 있는 중이라 부정확한 정보가 포함되어 있을 수 있습니다!
주의하세요!

올인원 스프링 프레임워크 참고.

https://search.shopping.naver.com/book/catalog/41101295635?cat_id=50010920&frm=PBOKPRO&query=%EC%98%AC%EC%9D%B8%EC%9B%90+%EC%8A%A4%ED%94%84%EB%A7%81+%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC&NaPm=ct=lma2t8xk%7Cci=a48cf03f14ef65da3f75709822c7b195a41bd691%7Ctr=boknx%7Csn=95694%7Chk=dba64f780dac99af3b6dc40908ddb18778aaa3a1


1. 도서 정보 수정

결과적으로 다음과 같은 요청을 보낸다.

  • 수정 요청 : /library/book/admin/modifyBookForm?b_no=[수정할 책의 b_no]

가. 도서 정보 수정 화면

도서 정보를 수정하는 화면을 보여준다.

@Controller
@RequestMapping("/book/admin")
public class BookController {
    ...
    @GetMapping("/modifyBookForm")
    public String modifyBookForm(@RequestParam("b_no") int b_no, Model model) {
        System.out.println("[BookController] bookDetail()");
        String nextPage = "admin/book/modify_book_form";
        BookVo bookVo = bookService.modifyBookForm(b_no);
        model.addAttribute("bookVo", bookVo);
        return nextPage;
    }
}
Code language: JavaScript (javascript)

BookController.modifyBookForm()

@Service
public class BookService {
    ...
    public BookVo modifyBookForm(int b_no) {
        System.out.println("[BookService] modifyBookForm()");
        return bookDao.selectBook(b_no);
    }
}
Code language: PHP (php)

BookService.modifyBookForm()


나. 도서 정보 수정

modify book” 버튼을 누르면 /library/book/admin/modify/BookConfirm 요청을 보낸다.

@Controller
@RequestMapping("/book/admin")
public class BookController {
    ...
    @PostMapping("/modifyBookConfirm")
    public String modifyBookConfirm(BookVo bookVo, @RequestParam("file") MultipartFile file) {
        System.out.println("[BookController] modifyBookConfirm()");
        String nextPage = "admin/book/modify_book_ok";
        if(!file.getOriginalFilename().equals("")) {
            String savedFileName = uploadFileService.upload(file);
            if(savedFileName != null)
                bookVo.setB_thumbnail(savedFileName);
        }

        int result = bookService.modifyBookConfirm(bookVo);

        if(result <= 0)
            nextPage = "admin/book/modify_book_ng";

        return nextPage;
    }
}
Code language: JavaScript (javascript)

BookController.modifyBookConfirm() 구현.

  • if(!file.getOriginalFilename().equals("")) {
    : 새로 업로드한 썸네일 이미지가 있는지 확인.
@Service
public class BookService {
    ...
    public int modifyBookConfirm(BookVo bookVo) {
        System.out.println("[BookSerivce] modifyBookConfirm()");
        return bookDao.updateBook(bookVo);
    }
}
Code language: PHP (php)

BookService.modifyBookConfirm()

@Component
public class BookDao {
    ...
    public int updateBook(BookVo bookVo) {
        System.out.println("[BookDao] updateBook()");

        String sql = "UPDATE tbl_book SET ";

        List<String> args = new ArrayList<String>();

        if(bookVo.getB_thumbnail() != null) {
            sql += "b_thumbnail = ?, ";
            args.add(bookVo.getB_thumbnail());
        }

        sql += "b_name = ?, ";
        args.add(bookVo.getB_name());

        sql += "b_author = ?, ";
        args.add(bookVo.getB_author());

        sql += "b_publisher = ?, ";
        args.add(bookVo.getB_publisher());

        sql += "b_publish_year = ?, ";
        args.add(bookVo.getB_publish_year());

        sql += "b_isbn = ?, ";
        args.add(bookVo.getB_isbn());

        sql += "b_call_number = ?, ";
        args.add(bookVo.getB_call_number());

        sql += "b_rental_able = ?, ";
        args.add(Integer.toString(bookVo.getB_rental_able()));

        sql += "b_mod_date = NOW() ";

        sql += "WHERE b_no = ?";
        args.add(Integer.toString(bookVo.getB_no()));

        int result = -1;

        try {
            result = jdbcTemplate.update(sql, args.toArray());
        }catch(Exception e) {
            e.printStackTrace();
        }

        return result;
    }

}
Code language: PHP (php)

BookDao.updateBook() 구현.

  • if(bookVo.getB_thumbnail() != null) {
    : 썸네일 변경 여부에 확인.
  • args.add(Integer.toString(bookVo.getB_rental_able()));
    : int 형은 String으로 변환해서 추가

썸네일 변경


2. 도서 정보 삭제

function deleteBook(b_no, b_name) {
    console.log('deleteBook() CALLED!!');

    let result = confirm('도서(' + b_name + ')를(을) 정말 삭제 하시겠습니까?');

    if (result)
        location.href = "<c:url value='/book/admin/deleteBookConfirm?b_no='/>" + b_no;
}
Code language: JavaScript (javascript)

결과적으로 다음과 같은 요청을 보낸다.

  • 삭제 요청 : /library/book/admin/deleteBookConfirm?b_no=[삭제할 책의 b_no]

@Controller
@RequestMapping("/book/admin")
public class BookController {
    ...
    @GetMapping("/deleteBookConfirm")
    public String deleteBookConfirm(@RequestParam("b_no") int b_no) {
        System.out.println("[BookController] deleteBookConfirm()");

        String nextPage = "admin/book/delete_book_ok";

        int result = bookService.deleteBookConfirm(b_no);

        if(result <= 0)
            nextPage = "admin/book/delete_book_ng";

        return nextPage;
    }
}
Code language: JavaScript (javascript)

BookController.deleteBookConfirm()

@Service
public class BookService {
    ...
    public int deleteBookConfirm(int b_no) {
        System.out.println("[BookService] deleteBookConfirm()");
        return bookDao.deleteBook(b_no);
    }
}
Code language: PHP (php)

BookService.deleteBookConfirm()

@Component
public class BookDao {
    ...
    public int deleteBook(int b_no) {
        System.out.println("[BookDao] deleteBook()");

        String sql = "DELETE FROM tbl_book " + "WHERE b_no = ?";

        int result = -1;

        try {
            result = jdbcTemplate.update(sql,b_no);
        }catch(Exception e) {
            e.printStackTrace();
        }
        return result;
    }
}
Code language: PHP (php)

BookDao.deleteBook()


댓글 남기기