일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 이클립스 로딩
- local 저장소 개별 관리
- VMware 네트워크 이상
- 특정 포트 확인
- vmware 로컬 웹서버 접근
- 저장소 관리
- svn e175002
- e175002
- xml 406
- 저장소 개별
- 도메인 웹호스팅 다를 경우
- 도메인 웹호스팅
- 406호출
- 특정 포트 연결 해제
- 면접
- 공공api xml
- 페이징 처리
- 저장소 개별 관리
- json xml 에러
- json 에러
- 이클립스 svn 설치
- 특정 포트 보기
- github
- 도메인 웹호스팅 다름
- 도메인 웹호스팅 다를 때
- 특정 포트 해제
- 이클립스 중단
- 도메인 서버
- xml 에러
- centos jeus 웹서버 접근
- Today
- Total
LIFE & IT
[ 페이징처리 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) * 게시글 표시량 ]] 으로 계산한다.
* 출처: 코드로 배우는 스프링 웹프로젝트 <남가람 북스>
'웹 프로그래밍 > Spring Framework' 카테고리의 다른 글
REST 방식 1 (0) | 2020.09.23 |
---|---|
STS 에서 동작하는 Spring 구조 테스트(1) (0) | 2020.04.15 |
[ 페이징 처리 1 ] 오라클 데이터베이스 페이징 처리(1) - 실행 계획 (0) | 2020.02.21 |
웹프로젝트 구조와 Spring MVC 구조 그리 모델2 패턴이해 (0) | 2019.09.14 |
STS Tomcat Modules 설정 방법 (0) | 2019.09.14 |