반응형

게시판 예제의 페이징 처리를 위한 SQL문장

 

select * from (

  select rownum rnum, num, writer, email, subject, pass,regdate, readcount, ref, step, depth, content, ip from (

    select * from board order by ref desc, step asc)) where rnum>=? and rnum<=?;

 

·   Board테이블의 페이징을 위한 컬럼

o    ref는 글그룹 번호

동일한 ref번호를 가지는 글에 대해 step depth를 이용하여 정렬함

o    step은 답글의 순서

새로운 답글이 달리면 기존의 답글들의 step을 하나씩 증가

o    depth는 답글의 깊이

답글에 답글이 달릴 때마다 증가된 값을 저장

 

·   Ref기준으로 내림차순 정렬

o    Ref가 같은 레코드는 step을 기준으로 오름차순 정렬

o    최근 글이 위로 보여지도록 정렬

 

·  Rownum은 조회 결과에 레코드마다 붙여주는 가상 번호(1부터 시작)

·   위의 정렬된 결과를 이용하여 페이지 번호에 따라 가져올 개수가 정해짐

·   위 정보를 참고하여 list.jsp에서 목록이 보여지는 동작부터 확인한다.

o    페이지번호 클릭 시 서버로 요청되는 값이 어떻게 전달되는지 분석

o    예제는 sequence 2번부터 시작

o    20개의 게시글과 첫 번째 글에 답글 2, 답글에 답글이 하나씩 등록된 상태

 

·   list.jsp 또는 페이지 번호[1] 요청 시

     

 

 

·   페이지 번호[2] 요청 시

·   페이지 번호[3] 요청 시

·   위 내용을 참조하여 전체 페이징 흐름 분석하기.

 

추가>

[이전], [다음] 링크는 pageBlock값에 따라 나타남.

현재 예제는 pageBlock=5이므로 게시글이 10(pageSize)*5(pageBlock)=50

즉 50개 이상의 글이 등록되어야 표시됨.

 

 

반응형

+ Recent posts