SMALL
안녕하세요, 코린이의 코딩 학습기 채니 입니다.
개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.
Controller
BoardController
@PostMapping("/boardUpdate.do")
public String boardUpdate(Board board, @RequestParam(name = "delFile", required = false) int[] delFiles, @RequestParam(name = "upFile") List<MultipartFile> upFileList, RedirectAttributes redirectAttr) throws IllegalStateException, IOException {
String saveDirectory = application.getRealPath("/resources/upload/board");
int result = 0;
// 1. 첨부파일 삭제
if(delFiles != null) {
for(int attachNo : delFiles) {
// 서버에 저장된 파일 삭제
Attachment attachment = boardService.selectOneAttachment(attachNo);
File delFile = new File(saveDirectory, attachment.getRenamedFilename());
boolean deleted = delFile.delete();
// DB 레코드 삭제
// if(deleted) {
result = boardService.deleteAttachment(attachNo);
// }
}
}
// 2. 업로드 파일 등록
for(MultipartFile upFile : upFileList) {
if(!upFile.isEmpty()) {
// 서버 컴퓨터 저장
String renamedFilename = HelloSpringUtils.getRenamedFilename(upFile.getOriginalFilename());
File destFile = new File(saveDirectory, renamedFilename);
upFile.transferTo(destFile);
// db 저장
Attachment attach = new Attachment(upFile.getOriginalFilename(), renamedFilename);
attach.setBoardNo(board.getNo());
board.add(attach);
}
}
// 3. 게시글 수정
result = boardService.updateBoard(board);
redirectAttr.addFlashAttribute("msg", "게시글이 수정되었습니다.");
return "redirect:/board/boardDetail.do?no=" + board.getNo();
}
Service
BoardService interface 생략
BoardServiceImpl
@Override
public int deleteAttachment(int attachNo) {
return boardDao.deleteAttachment(attachNo);
}
@Override
public int updateBoard(Board board) {
// 게시글 수정
int result = boardDao.updateBoard(board);
// Attachment 추가
List<Attachment> attachment = board.getAttachments();
if(!attachment.isEmpty() && attachment != null) {
for(Attachment attach : attachment) {
result = boardDao.insertAttachment(attach);
}
}
return result;
}
Dao
BoardDao interface
@Delete("delete from attachment where no = #{no}")
int deleteAttachment(int attachNo);
@Update("update board set title = #{title}, content = #{content}, updated_at = sysdate where no = #{no}")
int updateBoard(Board board);
기존 게시글
수정 후 게시글
LIST
'Java > └ [Spring] Practice' 카테고리의 다른 글
[실습문제] Dev 수정 및 삭제 구현하기 (0) | 2022.08.18 |
---|