分页查询
分页会先执行统计查询,再执行当前页查询。传入的原始 SQL 不应预先包含数据库专用的分页语句。
Start 和 Limit
start 是从 0 开始的记录偏移量,limit 是每页记录数:
PageResult<Map<String, Object>> page =
new Action(conn, "SELECT * FROM article ORDER BY id DESC")
.query()
.pageByStartLimit(0, 20);
页码和每页大小
页码从 1 开始:
PageResult<Map<String, Object>> page =
new Action(conn, "SELECT * FROM article ORDER BY id DESC")
.query()
.pageByPageNo(3, 20);
映射 JavaBean
PageResult<Address> page =
new Action(conn, "SELECT * FROM shop_address ORDER BY id")
.query()
.pageByPageNo(1, 20, Address.class);
PageResult 包含 list、totalCount、totalPage、currentPage、start、pageSize 和 zero。请求超过最后一页时,list 是空列表。
绑定查询参数
先在创建 Query 时传入参数,再调用分页方法:
PageResult<Map<String, Object>> page =
new Action(conn, "SELECT * FROM shop_address WHERE stat = ? ORDER BY id")
.query(1)
.pageByStartLimit(0, 20);
从 HTTP 请求读取分页参数
Servlet 重载支持以下参数名:
- Offset 模式:
start或offset;每页大小:pageSize、rows或limit。 - 页码模式:
pageNo或page;每页大小:pageSize、rows或limit。
PageResult<Map<String, Object>> page =
new Action(conn, sql).query(params).pageByPageNo(request);
基于请求的分页默认每页 12 条记录。