본문 바로가기
Java/└ [Spring] Practice

[실습문제] 게시글 수정 - 게시글 수정, 첨부파일 추가/삭제

by 박채니 2022. 9. 5.
안녕하세요, 코린이의 코딩 학습기 채니 입니다.
개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.

 

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

 

기존 게시글

 

 

수정 후 게시글

'Java > └ [Spring] Practice' 카테고리의 다른 글

[실습문제] Dev 수정 및 삭제 구현하기  (0) 2022.08.18