Pageable offset 从 0 开始?
时间: 2023-12-05 18:06:22 浏览: 214
mybatis-pageable-spring-boot-starter
在 Spring Data 中,通常情况下 Pageable 的页码是从 0 开始计数的,即第一页的页码为 0,第二页的页码为 1,以此类推。而对于 offset 参数,它的起始值通常是 0 或 1 取决于具体的数据库实现。例如,MySQL 中的 offset 参数起始值为 0,而 Oracle 中的 offset 参数起始值为 1。
因此,在使用 Pageable 进行分页查询时,我们需要根据具体的数据库实现来确定 offset 参数的起始值。如果我们使用的是 MySQL 数据库,那么通常情况下 offset 参数的起始值应该为 0。例如,下面是一个使用 Pageable 进行分页查询的示例代码:
```java
public Page<User> getUsers(Pageable pageable) {
String sql = "SELECT * FROM user LIMIT :offset, :pageSize";
Query query = entityManager.createNativeQuery(sql, User.class);
query.setParameter("offset", pageable.getOffset());
query.setParameter("pageSize", pageable.getPageSize());
List<User> users = query.getResultList();
long totalCount = getTotalCount();
return new PageImpl<>(users, pageable, totalCount);
}
```
在上述代码中,我们使用 Pageable 对象获取 offset 和 pageSize 参数,并将其传递给 createNativeQuery 方法进行查询。需要注意的是,在返回查询结果时,我们需要将 Pageable 对象和总记录数一起传递给 PageImpl 构造函数,以便于 Spring Data 对查询结果进行分页处理。
阅读全文