1. DTO 만들기
@Data public static class updateDTO{ private String title ; private String content ; }
클라이언트로부터 받을 새로운 게시글 데이터를 받는다.
2. update 메서드 만들기
board/BoardController
@PostMapping("/board/{id}/update") public String update(@PathVariable int id,BoardRequest.updateDTO requestDTO,HttpServletRequest request){ //1. 인증체크 User sessionUser = (User) session.getAttribute("sessionUser"); if(sessionUser==null){ return "redirect:/loginForm"; } //DB 조회 Board board = boardRepository.findByIdCheck(id); //2. 권한 체크 if(board.getUserId()!=sessionUser.getId()){ request.setAttribute("status",403); request.setAttribute("msg","게시글을 수정할 권한이 없습니다."); return "error/40x"; } //3. 핵심 로직 boardRepository.update(requestDTO,id); return "redirect:/board/"+id; }
컨트롤러를 통해 레파지토리에 접근한다.
3. update 쿼리 만들기
board/BoardRepository
@Transactional public void update(BoardRequest.updateDTO requestDTO, int id) { Query query = em.createNativeQuery("update board_tb set title = ? , content = ? where id = ?"); query.setParameter(1,requestDTO.getTitle()); query.setParameter(2,requestDTO.getContent()); query.setParameter(3,id); query.executeUpdate(); }
게시글이 정상적으로 수정된다.
Share article