Skip to main content

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 ?, ?

The parameters are the offset and page size. The first page generates only LIMIT ?.

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.