Pagination
Overview
ElastiCORE는 Entity와 DTO 정의에서 다양한 방식으로 페이징 처리를 지원합니다.
Automatic Pagination Configuration
Configuration via Entity
Entity에 @expose(n) 또는 @service(n) 어노테이션을 지정하면 자동으로 페이징이 적용됩니다:
entity:
Article:
meta: entity @expose(50) # 페이지당 50개 항목
fields:
aid: string @id @genid
title: string(200)! @search(like)
Configuration via DTO
DTO에 @searchable(...) 어노테이션을 지정하면 페이징 필드가 자동 생성됩니다:
dto:
ArticleSearchDTO:
meta: dto @searchable(entity=Article, pageSize=50)
fields:
title: string @search(like)
Auto-generated Pagination Fields
SearchDTO에 자동으로 다음 필드가 생성됩니다:
pageNumber: 페이지 번호 (기본값: 0)pageSize/sizeVal: 페이지 크기sortCode: 정렬 필드명
Pagination in DBMS Port
DBMS Port에서 return 타입이 Page<DTO>인 경우 자동으로 페이징 처리됩니다:
port:
ProductDbPortService:
meta: dbms @datasource("product")
methods:
getProductList:
meta: method -- 상품 목록 (페이징)
params:
input: ProductSearchDTO
return: Page<ProductDTO>
pageable: true
nativeQuery: true
query: |
SELECT p.id, p.name, p.price, p.category
FROM products p
WHERE p.active = true
Sort Processing
sortCode 파라미터를 통해 자동 정렬이 적용됩니다:
# 요청 예시
{"sortCode": "name+,age-"}
# 생성되는 SQL
ORDER BY name ASC, age DESC
+: 오름차순 (ASC)-: 내림차순 (DESC)