글 list 페이지에서 1개의 글을 클릭했을 때 '조회수'를 Update 한다.

 

[실행흐름]: 원리

1. BoardController 의 상세페이지를 담당하는 메서드: detatil 에서

 - service.hitUp(id) 를 실행.

 

2. BoardService(interface)와 BoardServiceImp(구현객체)

 1) BoardView hitup(int id);

 2) 구현객체의 오버라이드 메소드에서 boardDao.hitUp(id)를 실행 + return boardDao.get(id);

 

3. BoardDao(interface)와 MyBatisBoardDao(구현객체)

 3.1 hitUp(id) - 해당 글 ID로 UPDATE 쿼리문을 실행 ID의 hitCnt 컬럼을 +1 

 1) int hitUp(id)

 2) mapper.hitup(id);

 3.2 get(id) - 해당 글의 ID 값으로 상세 페이지를 get 하는 메서드

 

4. BoardDaoMapper.xml

  1) id = "get" 인 쿼리문(id의 모든 컬럼)

  2) id = "hitUp"인 쿼리문(hitCnt+1)

 

# 추가적으로 필요한 기능: 트랜잭션

 

 

# 무턱대고 생각했던 부분

이 기능을 어떻게 구현할까를 생각했을 때 굉장히 어렵게 접근했던 것 같다.

list 페이지의 해당 글을 클릭하는 이벤트가 발생할 때 자바스크립트에서 그  아이디 값을 얻어서,

다시 컨트롤러로 보내고,

그 아이디에 해당하는 로우의 hitCnt를 +1 해줄 생각을 했었다.

 

그런데 다른 사람들이 어떻게 이 기능을 구현했는지를 검색해 보니 내가 생각했던게 잘못되었다는 판단을 하게 되었다.

처음 글을 읽으면서는 다른 코드들을 보면서도 무슨 의미인지, 왜 이렇게 작성했는지 알지 못했지만

하나씩 곱씹어 보니 어떤 원리로 동작하는지를 알게 되었다.

 

 

Controller

Service

ServiceImp

BoardDao

MyBatisDao

BoardDaoMapper.xml

+ Recent posts