추가기능 1. 조회수 구현하기 - 점프 투 스프링부트(게시판 만들기)Spring2023. 1. 6. 22:53
Table of Contents
728x90
728x90
해당 게시글은 점프 투 스프링부트 교재를 통한 개인 학습 용도이며 기초 세팅은 생략하였습니다.
자바 8, 스프링부트 2.7.7버전 입니다.
조회수 구현하기
조회수는 보통 게시판 목록 페이지, 즉 우리가 만든 question_list 템플릿에서 구현되어야 할 것이다.
우선 조회수가 보여질 장소를 마련해주자.
"조회수" 라는 것은 해당 글을 조회할 때마다 올라가야 할 것이다. 우리가 만든 게시판의 "글"은 Question이다. 즉 Question 엔티티에 조회수에 해당하는 필드가 있어야 할 것이다.
또한 조회수 자체도 리파지토리에 저장되어야 하기 때문에, 서비스에서 이를 저장하고 조회수가 증가하게 만들어야 할 것이다.
Question.java
@Column(columnDefinition = "integer default 0", nullable = false)
private int view;
Question엔티티에 해당 필드(컬럼)을 추가해주었다. null은 불가능하며, 디폴트값은 0이다. 조회수는 0부터 시작할 것이다.
QuestionService.java
(...생략...)
public class QuestionService {
(...생략...)
public Question getQuestion(Integer id) {
Optional<Question> question = this.questionRepository.findById(id);
if (question.isPresent()) {
Question question1 = question.get();
question1.setView(question1.getView()+1);
this.questionRepository.save(question1);
return question1;
} else {
throw new DataNotFoundException("question not found");
}
}
기존의 getQuestion메서드를 위와 같이 변경했다. 처음의 getView()값은 0이다.
Question엔티티의 question1 인스턴스에서 해당 객체의 id값이 조회될 때마다 조회수를 1씩 증가시키고, question1에서 조회수값을 증가시켰기 때문에 question1 객체를 리턴하게 하였다.
이후 기존의 템플릿에서 Question엔티티의 view컬럼을 가져오게 아래와같이 수정했다.
<td th:text="${question.view}"></td>
조회수 값이 잘 들어온 것을 확인할 수 있다.
728x90
300x250
@mag1c :: 꾸준히 재밌게
2023.04 ~ 백엔드 개발자의 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!