Pagination
Offset pagination skips pageNumber × pageSize rows, then returns up to pageSize rows. Page numbers start at 0; a page size of 20 means offsets 0, 20, 40, and so on.
Page query
SELECT id, name FROM user_info ORDER BY id LIMIT ? OFFSET ?
The parameters are the page size and offset. The first page omits OFFSET.
Total-count query
When a total row count is required, dbVisitor runs a separate query:
SELECT COUNT(*) FROM (
SELECT id, name FROM user_info ORDER BY id
) AS TEMP_T
dbVisitor Usage
List<UserInfo> rows = lambda.query(UserInfo.class)
.orderBy(UserInfo::getId)
.initPage(20, 0)
.queryForList();
initPage(pageSize, pageNumber) uses zero-based page numbers. To reuse pagination state, use usePage(PageObject.of(pageNumber, pageSize)); Mapper methods can also accept a Page parameter. See 9.5 Pagination for pagination objects, total counts, and API entry points.
Notes
- Without stable ordering, consecutive pages may repeat or omit rows.
- A large offset increases scanning cost.
- Counting and fetching are separate queries and may disagree during concurrent changes.