springboot中接口post请求时分页处理
1、背景
- 在前端请求springboot接口时,page分页多为get请求,然后在get请求中定义参数
@PageableDefault Pageable pageable
即可,如:
@GetMapping(value = "/page")
public Page<VO> queryPage(@PageableDefault Pageable pageable) {
return service.queryPage(pageable);
}
- 但是如果这个时候一但修改成post请求,前端把page,size,sort等参数放到body体中,就会发现,分页失效了
2、解决方案
- 在queryVO中定义page,size属性字段
private int page;
private int size;
getter
setter
- 然后在接收到参数后,自己构造Pageable
import org.springframework.data.domain.PageRequest;
PageRequest pageRequest = PageRequest.of(queryVO.getPage(), queryVO.getSize());
- 底层PageRequest继承了AbstractPageRequest,而AbstractPageRequest实现了Pageable,所以传参时,可直接将PageRequest传给service层的Pageable
.End
给个一键三连吧~