tbl_board 테이블에 데이터 추가(약 30~50만개)
insert into tbl_board(bno, title, content, writer)
(select board_seq.nextval, title, content, writer
from tbl_board);
commit;
src/main/springstudent 경로에 있는 domain 패키지에 Criteria 클래스 추가 후 작성
@Data
public class Criteria {
private int pageNum;
private int amount;
public Criteria() {
this(1, 10);
}
public Criteria(int pageNum, int amount) {
this.pageNum = pageNum;
this.amount = amount;
}
}
src/main/springstudent 경로의 persistence 패키지에 있는 IBoardDAO 수정
public List<BoardDTO> listAll(Criteria cri) throws Exception;
persistence 패키지 안에 있는 impl 패키지의 BoardDAOImpl 파일 수정
@Override
public List<BoardDTO> listAll(Criteria cri) throws Exception {
return session.selectList("BoardMapper.getListWithPaging", cri);
}
boardMapper 파일로 가서 하단의 listAll select문 수정
<select id="getListWithPaging" resultType="com.hanul.springstudent.domain.BoardDTO">
<![CDATA[
SELECT bno,
title,
content,
writer,
regdate,
viewcount
FROM (
SELECT /*+ INDEX_DESC(tbl_board IDX_tbl_board_PK) */
rownum rn,
bno,
title,
content,
writer,
regdate,
viewcount
FROM tbl_board
WHERE rownum <= #{pageNum} * #{amount}
)
WHERE rn > (#{pageNum} - 1) * #{amount}
]]>
</select>
IBoardService 파일에서 listAll 추상메소드 매개변수 추가
public List<BoardDTO> listAll(Criteria cri) throws Exception;
IBoardService 파일로 가서 listAll 메소드 수정
@Override
public List<BoardDTO> listAll(Criteria cri) throws Exception {
return bDao.listAll(cri);
}
BoardController 파일에서 목록 전체조회 메소드 수
@RequestMapping(value = "/list", method = RequestMethod.GET)
public void listAll(Criteria cri, Model model) throws Exception {
log.info("show all list.....................");
model.addAttribute("list", service.listAll(cri));
}
IBoardDAOtest 파일에 테스트 케이스 추가
@Test
public void testListCriteria() throws Exception {
Criteria cri = new Criteria();
// 10개씩 3페이지
cri.setPageNum(3);
cri.setAmount(10);
List<BoardDTO> list = bDao.listAll(cri);
list.forEach(board -> log.info(board.getBno() + " : " + board.getContent()));
}
빈공간 우클릭하여 JUnit Test 실행
우측 JUnit탭에 초록색으로 표시되고 하단 콘솔창에 출력이 잘 된다면 테스트 성공!
DB와 비교하여 21~30번째 게시물이 맞게 출력되었는지 번호 확인
BoardControllerTest 파일에 테스트 케이스 추가
@Test
public void testRead() throws Exception {
log.info(mockMvc.perform(MockMvcRequestBuilders.get("/board/list")
.param("pageNum", "3")
.param("amount", "10"))
.andReturn().getModelAndView().getModelMap());
}
빈공간 우클릭하여 JUnit Test 실행
우측 JUnit탭에 초록색으로 표시되고 하단 콘솔창에 출력이 잘 된다면 테스트 성공!
'Programming > Spring' 카테고리의 다른 글
[STS3] Mapper를 활용하여 게시판 구현(7) (2) | 2024.04.18 |
---|---|
[STS3] Mapper를 활용하여 게시판 구현(6) (2) | 2024.04.18 |
[STS3] Mapper를 활용하여 게시판 구현(4) (0) | 2024.04.17 |
[STS3] Mapper를 활용하여 게시판 구현(3) (0) | 2024.04.16 |
[STS3] Mapper를 활용하여 게시판 구현(2) (1) | 2024.04.15 |