实现方法
在Spring Data JPA中可以直接使用findAll分页查询,定义如下:
Page<T> findAll(Specification<T> spec, Pageable pageable);
如果在Repository里的JPQL上增加分页,只需在最后传递一个Pageable参数即可实现分页查询
@Query("SELECT * FROM USERS WHERE LASTNAME = ?1")
Page<User> findPageByLastName(List<Channel> channels,Pageable page);
其实在使用原生SQL时也是可以使用Pageable参数进行分页查询的。具体使用方法如下:
@Query(value = "SELECT * FROM USERS WHERE LASTNAME = ?1 \n#pageable\n",
countQuery = "SELECT count(*) FROM USERS WHERE LASTNAME = ?1",
nativeQuery = true)
Page<User> findByLastname(String lastname, Pageable pageable);
实现要点:
- 在查询语句结尾增加\n#pageable\n 传入分页信息
- 增加countQuery属性,用于总数的统计
注意事项
由于Pageable参数支持排序功能,如果在sql语句中同时使用了ORDER进行排序,就会产生冲突。所以只能二选一。
网友评论