09009
[Spring] 예제1 - 게시글 수정 및 삭제 구현 본문
삭제: redirect
수정: 수정 페이지가 나오고 수정 완료 버튼을 누르면 파라미터를 전송하여 DB 업데이트 - redirect
쿼리 작성
특정 게시글 조회수 증가 (사용자가 게시글을 클릭하였을 때)
-- 특정 게시글 조회수 증가
UPDATE fp_board
SET read_count = read_count + 1
WHERE id = 3;
게시글 삭제
-- 글 삭제
DELETE FROM fp_board WHERE id = 3;
실무에서는 게시글을 삭제할 때 DELETE문을 사용하지 않는다.
대신 필드를 하나 추가하여 UPDATE문으로 적용한다.
게시글 수정
-- 글 수정
UPDATE fp_board
SET title = '바뀐 제목', content = '바뀐 내용'
WHERE id = 3;
이제 인터페이스에서 메서드 3개 선언하고 xml에서 쿼리 매핑하면 된다.
✍ BoardSqlMapper.java
메서드 추가
게시글 수정 메서드는 제목, 내용을 수정하므로 dto를 파라미터로 받는다.
// 조회수 증가
public void increaseReadCount(int id);
// 게시글 삭제
public void deleteById(int id);
// 게시글 수정 (제목, 내용, 게시글 id)
public void update(BoardDto boardDto);
✍ BoardSqlMapper.xml
쿼리 추가
<update id="increaseReadCount">
UPDATE fp_board
SET read_count = read_count + 1
WHERE id = #{id}
</update>
<delete id="deleteById">
DELETE FROM fp_board WHERE id = #{id}
</delete>
<update id="update">
UPDATE fp_board
SET title = #{title}, content = #{content}
WHERE id = #{id}
</update>
✍ BoardServiceImpl.java
getBoard()에 조회수 증가 메서드를 호출하면 추후에 게시글 수정할 때도 조회수가 증가되므로
getBoard()에 조회수 증가 메서드를 호출하지 않도록 설계할 것이다.
코드 추가
public void increaseReadCount(int id) {
boardSqlMapper.increaseReadCount(id);
}
public void deleteContent(int id) {
boardSqlMapper.deleteById(id);
}
public void updateContent(BoardDto boardDto) {
boardSqlMapper.update(boardDto);
}
✍ BoardController.java
메서드 수정
수정 버튼을 눌렀을 때 게시글 수정 화면이 나와야 한다.
수정 : 상세 글 보기 + 글쓰기 페이지가 합쳐진 구조
@RequestMapping("readContentPage")
public String readContentPage(Model model, int id) {
// 사실 int는 null 값이 선언되지 못하므로 null이면 터진다.
boardService.increaseReadCount(id);
Map<String, Object> map = boardService.getBoard(id);
model.addAttribute("data", map);
return "board/readContentPage";
}
@RequestMapping("deleteProcess")
public String deleteProcess(int id) {
boardService.deleteContent(id);
return "redirect:./mainPage";
}
@RequestMapping("updatePage")
public String updatePage(Model model, int id) {
Map<String, Object> map = boardService.getBoard(id);
model.addAttribute("data", map);
return "board/updatePage";
}
게시글 수정 페이지 만들기
✍ updatePage.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>게시글 수정</h1>
<form action="./updateContentProcess" method="post">
작성자 : ${sessionUser.nickname} <br>
제목 : <input type="text" name="title" value="${data.boardDto.title}"><br>
내용 : <br>
<textarea rows="10" cols="60" name="content">${data.boardDto.content}</textarea>
<%-- hidden 태그는 항상 value가 설정되어 있어야 한다. --%>
<input type="hidden" name="id" value="${data.boardDto.id}">
<br>
<button>수정</button>
</form>
</body>
</html>
✍ BoardController.java
@RequestMapping("updateContentProcess")
public String updateContentProcess(BoardDto boardDto) {
boardService.updateContent(boardDto);
return "redirect:./mainPage";
}
'Back-End > Spring' 카테고리의 다른 글
[Spring] 예제 1 연습 - 설정 (0) | 2023.05.20 |
---|---|
[Spring] 예제1 - 작성일 출력 형식 수정 (0) | 2023.05.18 |
[Spring] 예제1 - 게시글 상세보기 (0) | 2023.05.17 |
[Spring] 예제1 - 게시글 목록 출력하기 (0) | 2023.05.17 |
[Spring] 예제1 - 게시판 구현 (1) | 2023.05.17 |
Comments