SpringBoot Jpa 分页查询
JpaRepository提供了如下表所述的内置查询:
方法 | 描述 |
List findAll() | 返回所有实体 |
List findAll(Iterable ids) | 返回指定id的所有实体 |
T getOne(ID id) | 根据id返回对应的实体,如果未找到,则返回空 |
List findAll(Sort sort) | 返回所有实体,按照指定顺序排序返回 |
Page findAll(Pageable pageable) | 返回实体列表,实体的offset和limit通过pageable来指定 |
分页查询主要用到:
Page findAll(Pageable pageable) 接口
返回值Page类:
int getTotalPages() 获取总的页数
long getTotalElements() 返回总数
List getContent() 返回某页的结果集
参数 Pageable:
PageRequest是Pageable的实现类,可以通过以下工厂方法创建:
public static PageRequest of(int page,int size) public static PageRequest of(int page,int size,Sort sort) public static PageRequest of(int page,int size,Direction direction,String ... properties) • page:从0开始,表示查询页 • size:每页查询个数 • sort:排序方式 • direction:排序方式,ASC、DESC • properties:排序的字段 @RequestMapping(path = "/page") public List<Message> queryPage(@RequestBody Map<String, Object> params) { Integer pageNo = Integer.valueOf((String) params.get("pageNo")); Integer pageSize = Integer.valueOf((String)params.get("pageSize")); /** * 添加排序Sort * Sort.Direction.DESC表示降序 * Sort.Direction.ASC表示升序 * properties是指实体类的属性名(不是字段名) */ Sort sort = new Sort(Sort.Direction.ASC, "id"); /** * 分页参数Pageable * 参数1:查询的页码 * 参数2:每页查询的条数 * 参数3:查询结果的排序规则(可选 */ Pageable pageable = PageRequest.of(pageNo, pageSize, sort); /** * 分页查询 * 参数1:查询条件Specification * 参数2:分页参数Pageable */ Page<User> page=userRepository.findAll(pageReques); List<User> users=page.getContent(); return users; • }