[Spring] 도서 수정, 삭제

2024. 1. 1. 00:24학부 강의/웹프로그래밍 (Spring)

 

0. 출처

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

 

 

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

 

올인원 스프링 프레임워크 : 네이버 도서

네이버 도서 상세정보를 제공합니다.

search.shopping.naver.com

 


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;
    }
}

BookController.modifyBookForm()

 

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

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;
    }
}

BookController.modifyBookConfirm() 구현.

 

  • if(!file.getOriginalFilename().equals("")) {
    : 새로 업로드한 썸네일 이미지가 있는지 확인.

 

@Service
public class BookService {
    ...
    public int modifyBookConfirm(BookVo bookVo) {
        System.out.println("[BookSerivce] modifyBookConfirm()");
        return bookDao.updateBook(bookVo);
    }
}

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;
    }

}

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;
}

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

 

  • 삭제 요청 : /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;
    }
}

BookController.deleteBookConfirm()

 

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

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;
    }
}

BookDao.deleteBook()

 

 


'학부 강의 > 웹프로그래밍 (Spring)' 카테고리의 다른 글

[Spring] Lombok  (0) 2024.01.04
[Spring] 사용자 관련 기능 구현  (0) 2024.01.04
[Spring] 도서 등록, 검색  (0) 2023.12.31
[Spring] Mail 보내기  (2) 2023.12.21
[Spring] 관리자 로그인  (2) 2023.12.20