温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java API接口如何分页

发布时间:2026-09-11 21:06:39 来源:亿速云 阅读:91 作者:小樊 栏目:编程语言

在 Java 中,API 接口分页通常有两种常见做法:

  1. 后端分页(推荐):数据库只查当前页数据
  2. 前端分页:一次性返回所有数据,前端切分(数据量小才用)

下面以 Spring Boot + MyBatis / JPA 为例说明常见分页方式。


一、分页参数设计(通用)

请求参数一般包括:

pageNum=1     // 第几页(从1开始)
pageSize=10  // 每页条数

示例 URL:

GET /api/users?pageNum=1&pageSize=10

二、Spring Boot + MyBatis 分页(PageHelper)

1. 引入依赖

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.4.7</version>
</dependency>

2. Controller

@GetMapping("/users")
public PageInfo<User> listUsers(
        @RequestParam int pageNum,
        @RequestParam int pageSize) {

    PageHelper.startPage(pageNum, pageSize);
    List<User> users = userMapper.selectAll();
    return new PageInfo<>(users);
}

3. 返回结果示例

{
  "list": [...],
  "pageNum": 1,
  "pageSize": 10,
  "total": 100,
  "pages": 10
}

三、Spring Boot + JPA 分页(推荐)

1. Entity

@Entity
public class User {
    @Id
    private Long id;
    private String name;
}

2. Repository

public interface UserRepository extends JpaRepository<User, Long> {
}

3. Controller

@GetMapping("/users")
public Page<User> listUsers(
        @RequestParam int page,
        @RequestParam int size) {

    Pageable pageable = PageRequest.of(page - 1, size);
    return userRepository.findAll(pageable);
}

4. 返回结果

{
  "content": [...],
  "totalElements": 100,
  "totalPages": 10,
  "number": 0,
  "size": 10
}

四、手动 SQL 分页(最原始)

MySQL

SELECT * FROM user
LIMIT #{offset}, #{pageSize}
int offset = (pageNum - 1) * pageSize;

五、分页返回结构建议(统一格式)

{
  "code": 200,
  "data": {
    "list": [],
    "pageNum": 1,
    "pageSize": 10,
    "total": 100
  }
}

六、最佳实践建议

✅ 后端分页(性能最好)
✅ 使用 LIMIT/OFFSET 或数据库分页
✅ 返回总条数 total
❌ 不建议一次性返回上万条数据


如果你用的是 Spring Boot / MyBatis-Plus / JPA / MongoDB,可以告诉我,我可以给你对应完整示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI