페이징 처리 구현하려고 검색했는데 offset이랑 limit가 오지게 나와서 정리하려고 작성하는 글😅😅
offset은 검색 결과에서 시작 지점을 나타낸다. 일반적으로 결과 집합의 첫 번째 행부터 시작한다.
예를 들어, 만약 offset을 10으로 설정하면 결과 집합의 11번째 행부터 검색이 시작된다. offset을 사용하면 이전 페이지의 결과를 건너뛸 수 있으며, 특정 페이지로 이동할 수 있다.
limit은 결과 집합에서 반환되는 행의 최대 수를 나타낸다. 즉, 한 페이지에 표시되는 항목 수를 결정한다.
예를 들어, limit을 10으로 설정하면 결과 집합에서 최대 10개의 항목이 반환된다. limit을 사용하면 한 번에 반환되는 항목 수를 제한하므로 페이지당 표시되는 항목 수를 조절할 수 있다.
🔎예시
첫 번째 페이지 (페이지 번호 1)를 표시하려면:
SELECT * FROM orders
ORDER BY order_date
LIMIT 10 OFFSET 0; //0~10번
두 번째 페이지 (페이지 번호 2)를 표시하려면:
SELECT * FROM orders
ORDER BY order_date
LIMIT 10 OFFSET 10; //11~20번
세 번째 페이지 (페이지 번호 3)를 표시하려면:
SELECT * FROM orders
ORDER BY order_date
LIMIT 10 OFFSET 20; //21~30번
일반적으로 페이징 처리를 구현할 때, offset과 limit을 데이터베이스 쿼리에 사용하여 특정 페이지의 결과를 검색한다. 페이지 번호와 페이지 크기 (또는 limit)를 사용하여 offset을 계산할 수 있다.
이를 통해 데이터베이스에서 필요한 데이터를 효율적으로 가져와 웹 페이지 등에서 페이지별로 표시할 수 있다.
public Integer getStartRow() {
return ((this.pageNo - 1) * this.size) + 1;
}
public Integer getEndRow() {
return ((this.pageNo - 1) * this.size) + this.size;
}
@Deprecated
public Integer getOffset() {
return (this.pageNo - 1) * this.size;
}
@Deprecated
public Integer getLimit() {
return this.size;
}