Programming/스프링(spring) - Enterprise

스프링(spring)/ 게시판 구축 5(좋아요 기능)

esoog Polaris 2023. 7. 21. 14:42
반응형

1. '좋아요'나 '하트' 등은 글을 읽는 페이지에서 구축하는 게 좋겠다고 생각해서,

조회 상세 링크 페이지에서 일단 시작한다. view.jsp파일에 수정과 삭제가 있는 div태그에 간단히 추가.

 

<a href="/board/heart?idx=${view.idx}">좋아요</a>
<p>좋아요 ${view.hcount}</p>

* heart라는 url요청을 사용. view모델 객체의 hcount 사용해서 즉각적으로 데이터를 보여주기 위함.

 

 

 

 

2. 삭제 기능처럼 클릭하면 바로 적용되니까, 따로 heart 뷰 파일은 패스하고 컨트롤러~

BoardController에 삭제기능 비슷하게 베끼면 된다.

 

//좋아요
@RequestMapping(value = "/heart", method = RequestMethod.GET)
public String getHeart(@RequestParam("idx") int idx) throws Exception {
    service.heart(idx);  
    return "redirect:/board/view?idx="+idx;
}

* /heart 요청은 컨트롤러로 처리하기 위해.

여기서도 마찬가지로 게시물idx로 구분하여 좋아요 컬럼 데이터만 건드리면 된다.

리턴받는 부분은 그 페이지 그대로 남아 있을 꺼니까.

컨트롤러 다 돌고나면, 그 페이지 그대로 남아있으면, 좋아요 수만 바뀔 것이다.

 

 

 

 

3. 그럼 이제 매퍼.boardMapper파일에 좋아요 카운트로 사용할 쿼리문 추가.

 

<!-- 좋아요 -->
<update id="heart" parameterType="int" >
	update board
	set
	hcount = hcount+1
	where idx= #{idx}
</update>

* update 쿼리문을 사용. 파라미터는 idx의 int형으로 전달받음.

sql문의 int타입 증가 문법 사용. ++ 이런거는 sql문 아님.

 

 

 

 

4. 그 다음 DAO와 Service 파일에 추가

BoardDAO와 BoardService 파일에

 

// 좋아요
public void heart(int idx) throws Exception;
}

 

 

BoardDAOImpl 파일에는 아래 코드 추가

 

// 좋아요
@Override
public void heart(int idx) throws Exception {
	sql.update(namespace + ".heart", idx);
}

 

 

BoardServiceImpl 파일에는 아래 코드 추가

 

//좋아요
@Override
public void heart(int idx) throws Exception {
	dao.heart(idx);
}

* 간단히 끝냈다. 사실 디자인적으로 좋아요는 html링크로 하지 않고, 자바스크립트로 건드려주면 된다.

기능만 구현하는 거니까 일단 패스.

 

확인. 나이스. 

728x90