Spring

Spring 페이징 처리

0304호 2023. 2. 9. 18:25

페이징


페이징은 get방식으로 처리한다.
이동할 때 페이지 번호를 가지고 다닌다.
페이징 처리하는 로직을 클래스로 분류한다
->Criteria클래스, PageVO클래스
sql에 변경을 주는 클래스, sql로 화면을 그리는 클래스. (반드시는 아님)




MYSQL


오라클은 limit함수가 없어서 인라인뷰로 해줘야 한다. 
MySQL에서 페이징은 limit함수를 이용한다!

 


limit(데이터시작, 데이터개수)

select * from table
order by num desc
limit 0,10;

 1~10번 데이터가 조회된다.

select * from table
order by num desc
limit 10,20;

11번~30번 데이터가 조회된다.

select *
from trip order by tno desc limit 0,10; -- 1번에서 10개의 데이터

select * from trip order by tno desc limit 10,10; -- 11번에서 10개

select * from trip order by tno desc limit 10,50; -- 11번에서 50개

 


Critera클래스

-데이터시작과 데이터개수를 뽑아서 sql로 넘겨준다.
pageNum//페이지번호
count //몇개의 데이터를 보여줄건가.

기본생성자로 pageNum=1, count=10을 넣고
매개변수를 받는 생성자에서 사용자가 원하는 걸 넣어준다.

 


계산하는 메서드를 만들어서 sql문에 전달하게 해준다.

public int getPageStart() {
	return (pageNum - 1) * count;
}

 

처럼.

pageNum은 클릭하는 페이지, count는 값이 변할 수 있으니 그대로.

1페이지를 누르면 (1-1)*10=0, 카운트는 10.
그래서 limit에서 0,10이 되니 1~10번 글을 뽑고,

가령 3페이지를 누르면 (3-1)*10=20, 카운트는 10.
->limit 20,10이니 21번~31번 글을 뽑는다.