[ 페이징처리 3 ] Mybatis 와 스프링에서 페이징 처리
객체 생성을 통한 페이징 처리
Criteria = "검새의 기준"
용도 : pageNum , amount 값을 같이 전달하는 용도
게시글 페이지는 "1" 페이지 그리고 1페이지당 10개의 게시글을 보여준다고 가정
package org.zerock.domain;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
public class Criteria {
private int pageNum;
private int amount;
public Criteria(){
this(1,10) // 1 페이지, 10개 게시글
}
public Criteria(int pageNum, int amount) {
this.pageNum = pageNum;
this.amount = amount;
}
}
BoardMapper 인터페이스에 Criteria 타입을 파라미터로 사용하는 getListWithPaging() 메서드를 작성
package org.zerock.mapper;
import java.util.List;
import org.zerock.domain.BoardVO;
import org.zerock.domain.Criteria;
public interface BoardMapper {
public List<BoardVO> getListWithPaging(Criteria cri);
}
/ex02/src/main/resources/org/zerock/mapper/
BoardMapper.xml 에 getListWithPaging SQL 태그 추가
<select id="getListWithPaging" resultType="org.zerock.domain.BoardVO">
<![CDATA[
select
bno, title, content, writer, regdate, updatedate
from
(
select /*+INDEX_DESC(tbl_board pk_board) */
rownum rn, bno, title, content, writer, regdate, updatedate
from
tbl_board
where rownum <= 20
)
where rn > 10
]]>
</select>
- CDATA 처리는 XML 에서는 처리할 수 없는 부등호를 사용하기 위함이다. XML 에서는 '<' , '>' 기호는 태그로 인식.
(< , > 같은 특수 문자 사용 할 수는 있다. )
- 인라인뷰에선 BoardVO를 구성하는데 필요한 모든 컬럼, Rownum을 rn 가명을 이용해 만든다
- 아웃라인 에서는 rn 컬럼을 조건을 처리
위의 XML 10, 20 은 각각 amount, pageNum 값이기 때문에 아래와 같이 변경 할 수 있다.
<select id="getListWithPaging" resultType="org.zerock.domain.BoardVO">
<![CDATA[
select
bno, title, content, writer, regdate, updatedate
from
(
select /*+INDEX_DESC(tbl_board pk_board) */
rownum rn, bno, title, content, writer, regdate, updatedate
from
tbl_board
where rownum <= #{pageNum}*#{amount}
)
where rn > (#{pageNum} -1)*#{amount}
]]>
</select>
- rownum <= pageNum * amount
1 페이지일 경우 rownum 을 10개 까지만 찾아야 하고 2 페이지일 경우 rownum 을 20개까지 찾아야하기 때문에 [[ 페이지 * 게시글 표시량 ]] 으로 계산한다.
- rn > (pageNum -1) * amount
1 페이지일 경우 rownum 을 인라인뷰에서 1~10까지만 찾아야하고 2 페이지일 경우 rownum 을 인라인뷰에서 11~20까지만 찾아내야하기 때문에 [[ (페이지-1) * 게시글 표시량 ]] 으로 계산한다.
* 출처: 코드로 배우는 스프링 웹프로젝트 <남가람 북스>