實(shí)現(xiàn)方法
在Spring Data JPA中可以直接使用findAll分頁(yè)查詢,定義如下:
Page<T> findAll(Specification<T> spec, Pageable pageable);
如果在Repository里的JPQL上增加分頁(yè),只需在最后傳遞一個(gè)Pageable參數(shù)即可實(shí)現(xiàn)分頁(yè)查詢
@Query("SELECT * FROM USERS WHERE LASTNAME = ?1")
Page<User> findPageByLastName(List<Channel> channels,Pageable page);
其實(shí)在使用原生SQL時(shí)也是可以使用Pageable參數(shù)進(jìn)行分頁(yè)查詢的。具體使用方法如下:
@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);
實(shí)現(xiàn)要點(diǎn):
- 在查詢語(yǔ)句結(jié)尾增加\n#pageable\n 傳入分頁(yè)信息
- 增加countQuery屬性,用于總數(shù)的統(tǒng)計(jì)
注意事項(xiàng)
由于Pageable參數(shù)支持排序功能,如果在sql語(yǔ)句中同時(shí)使用了ORDER進(jìn)行排序,就會(huì)產(chǎn)生沖突。所以只能二選一。