반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- StringReader
- Daemon()
- 상관서브쿼리
- include액션태그
- MemoryStream
- StringWriter
- 상관 서브 쿼리
- include 지시자
- 표현 언어
- interrupted()
- ObjectInputStream
- first-child
- 메모리스트림
- String char[] 형변환
- 리눅스셋팅
- Linux세팅
- 동기화
- 리눅스세팅
- include지시자
- ThreadGroup()
- first-of-child
- 아이디중복
- 스레드그룸
- ID중복
- sleep()메소드
- Linux셋팅
- interrupt()
- char[] String 형변환
- isinterrupted()
- InputDialog
Archives
- Today
- Total
다연이네
[days16] 댓글과 댓글 수에 대한 처리 본문
반응형
1. 쿼리 실행
alter table tbl_board add (replycnt number default 0);
select * from tbl_board;
update tbl_board
set replycnt =
(
select count(rno)
from tbl_reply
where tbl_reply.bno = tbl_board.bno
);
commit;
댓글수에 대한 컬럼을 추가하고, 기존에 댓글이 있는 게시글의 경우 그 댓글 수로 update하는 작업
2. BoardVO 추가
private int replyCnt; //추가
컬럼을 추가했으니 필드도 추가해주자
3. BoardMapper.java
//@Param 알고 있어야
public void updateReplyCnt(@Param("bno") Long bno, @Param("amount") int amount);
댓글 수를 update하는 메소드
4. BoardMapper.xml
<update id="updateReplyCnt">
update tbl_board
set replycnt = replycnt + #{amount}
where bno = #{bno}
</update>
5. replyServiceImpl
- private BoardMapper boardMapper; 추가
- @Transactional 댓글 추가, 삭제 메소드 변경 (댓글수 증가하는 작업)
package org.zerock.service;
import java.util.List;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.zerock.domain.Criteria;
import org.zerock.domain.ReplyPageDTO;
import org.zerock.domain.ReplyVO;
import org.zerock.mapper.BoardMapper;
import org.zerock.mapper.ReplyMapper;
import lombok.AllArgsConstructor;
import lombok.extern.log4j.Log4j;
// p.390
@Service
@Log4j
@AllArgsConstructor
public class ReplyServiceImpl implements ReplyService {
private ReplyMapper mapper; //@AllArgsConstructor 생성자에 의해 자동 주입(DI)
private BoardMapper boardMapper;
//댓글은 전부 ajax
@Transactional
@Override
public int register(ReplyVO vo) {
log.info("register......" + vo);
boardMapper.updateReplyCnt(vo.getBno(), 1);
return mapper.insert(vo);
}
@Override
public ReplyVO get(Long rno) {
log.info("get......" + rno);
return mapper.read(rno);
}
@Override
public int modify(ReplyVO vo) {
log.info("modify......" + vo);
return mapper.update(vo);
}
@Transactional
@Override
public int remove(Long rno) {
log.info("remove...." + rno);
ReplyVO vo = mapper.read(rno);
boardMapper.updateReplyCnt(vo.getBno(), -1);
return mapper.delete(rno);
}
@Override
public List<ReplyVO> getList(Criteria cri, Long bno) {
log.info("get Reply List of a Board " + bno);
return mapper.getListWithPaging(cri, bno);
}
@Override
public ReplyPageDTO getListPage(Criteria cri, Long bno) {
return new ReplyPageDTO(
mapper.getCountByBno(bno),
mapper.getListWithPaging(cri, bno));
}
}
private BoardMapper boardMapper 필드를 추가하고
댓글 추가, 삭제 메소드에 @Transaction을 삽입해 트랜잭션이 이루어지도록 한다.
6. list.jsp에서 댓글 수를 출력해 타이틀 옆에 띄우는 코딩
<b>[ <c:out value="${board.replyCnt}" /> ]</b>
반응형
'Spring' 카테고리의 다른 글
[days16] 파일 업로드 처리 (0) | 2021.02.24 |
---|---|
[days16] AOP와 트랜잭션 (0) | 2021.02.24 |
[days15] Ajax 댓글 처리 (0) | 2021.02.23 |
[days15] REST 방식으로 전환 (0) | 2021.02.23 |
[days14] 페이징 처리 및 [검색 기능] 구현 (2/2) (0) | 2021.02.22 |
Comments