在Java中实现分页接口通常遵循以下步骤:
定义分页模型:
创建一个分页模型类,用于封装分页信息,如当前页码、每页大小、总记录数、总页数等。
public class PageModel {
private List<?> list; // 结果集
private int totalRecords; // 查询记录数
private int pageSize; // 每页多少条数据
private int pageNo; // 当前页码
// getters and setters
}
创建分页接口:
在Controller层定义一个接口方法,用于接收分页参数并返回分页结果。
@RestController
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping("/users")
public PageModel getUsers(@RequestParam(defaultValue = "0") int pageNo, @RequestParam(defaultValue = "10") int pageSize) {
Pageable pageable = PageRequest.of(pageNo, pageSize);
Page
userPage = userRepository.findAll(pageable); PageModel pageModel = new PageModel();
pageModel.setList(userPage.getContent());
pageModel.setTotalRecords(userPage.getTotalElements());
pageModel.setPageSize(pageSize);
pageModel.setPageNo(pageNo);
return pageModel;
}
}
实现分页查询:
在Repository层定义一个方法,使用JPA的`Pageable`接口执行分页查询。
@Repository
public interface UserRepository extends JpaRepository
{ Page
findAll(Pageable pageable); }
处理分页结果:
在Service层处理分页结果,并将其封装到分页模型中返回。
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public PageModel getUsers(int pageNo, int pageSize) {
Pageable pageable = PageRequest.of(pageNo, pageSize);
Page
userPage = userRepository.findAll(pageable); return convertToPageModel(userPage);
}
private PageModel convertToPageModel(Page
userPage) { PageModel pageModel = new PageModel();
pageModel.setList(userPage.getContent());
pageModel.setTotalRecords(userPage.getTotalElements());
pageModel.setPageSize(userPage.getSize());
pageModel.setPageNo(userPage.getNumber());
return pageModel;
}
}
前端调用:
使用Postman或其他工具发送GET请求到`/users`接口,并通过添加`pageNo`和`pageSize`参数来指定查询的页码和每页的数据量。
GET /users?pageNo=0&pageSize=10
以上步骤展示了如何实现一个简单的Java分页接口。请根据实际需求调整代码,并考虑添加错误处理和输入验证。