상품 삭제
상품 삭제의 전반적인 흐름은 아래와 같습니다.
1. detail.html에서 [삭제] 버튼을 누르면 http://localhost/delete 주소를 요청하고 ProductController의 delete() method가 호출됩니다.
2. Controller에서 받은 상품코드를 repository에 보냅니다.
3. repository에서 delete query가 실행되어 상품코드에 해당하는 레코드가 삭제됩니다.
4. Controller에서 다시 http://localhost/ 로 이동하여 상품목록 화면에 반영됩니다.
[해설]
@PostMapping("delete")
post 방식으로 호출하므로 @PostMapping을 사용합니다.
public String delete(long productCode) {
상품코드가 productCode 변수에 전달됩니다.
Optional<Product> opt = productRepository.findById(productCode);
Product dto = opt.get();
해당 상품이 존재하지 않으면 NullPointerException이 발생하므로 Optional 객체로 처리합니다.
String filename = dto.getFilename();
첨부파일의 이름을 조회합니다.
if (filename != null && !filename.equals("-")) {
첨부파일이 존재하는 경우
File f = new File(upload_path + filename);
if (f.exists())
f.delete();
}
파일 정보를 읽어오고 파일이 존재하면 삭제합니다.
productRepository.deleteById(productCode);
레코드를 삭제합니다.
return "redirect:/";
상품 목록으로 이동합니다.
[실행 결과]
상품 상세 화면에서 [삭제] 버튼을 클릭하면 상품이 삭제됩니다.
이제 모든 작업이 완료되었습니다.
여기까지 실습하시느라 대단히 수고가 많으셨습니다.
간단한 예제이지만 스프링 부트 JPA의 기본적인 실행 과정에 대해 설명을 드렸습니다.
이 방법을 활용하여 다양한 기능을 확장하여 만들 수 있을 것입니다.
번호 | 제목 | 작성자 | 작성일 | 추천 | 조회 |
19 |
상품 삭제
vita
|
2023.11.15
|
추천 0
|
조회 132
|
vita | 2023.11.15 | 0 | 132 |
18 |
상품 수정
vita
|
2023.11.15
|
추천 0
|
조회 112
|
vita | 2023.11.15 | 0 | 112 |
17 |
상품 상세
vita
|
2023.11.15
|
추천 0
|
조회 125
|
vita | 2023.11.15 | 0 | 125 |
16 |
상품 등록
vita
|
2023.11.15
|
추천 0
|
조회 105
|
vita | 2023.11.15 | 0 | 105 |
15 |
상품 목록
vita
|
2023.11.15
|
추천 0
|
조회 146
|
vita | 2023.11.15 | 0 | 146 |
14 |
14. detail.html
vita
|
2023.11.15
|
추천 0
|
조회 119
|
vita | 2023.11.15 | 0 | 119 |
13 |
13. write.html
vita
|
2023.11.15
|
추천 0
|
조회 135
|
vita | 2023.11.15 | 0 | 135 |
12 |
12. list.html
vita
|
2023.11.15
|
추천 0
|
조회 130
|
vita | 2023.11.15 | 0 | 130 |
11 |
11. error.html
vita
|
2023.11.15
|
추천 0
|
조회 123
|
vita | 2023.11.15 | 0 | 123 |
10 |
10. main.css
vita
|
2023.11.15
|
추천 0
|
조회 119
|
vita | 2023.11.15 | 0 | 119 |