Spring Data JPA中原生SQL使用Pageable進(jìn)行分頁(yè)的方法

實(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):

  1. 在查詢語(yǔ)句結(jié)尾增加\n#pageable\n 傳入分頁(yè)信息
  2. 增加countQuery屬性,用于總數(shù)的統(tǒng)計(jì)

注意事項(xiàng)

由于Pageable參數(shù)支持排序功能,如果在sql語(yǔ)句中同時(shí)使用了ORDER進(jìn)行排序,就會(huì)產(chǎn)生沖突。所以只能二選一。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Data Jpa 簡(jiǎn)介 JPA JPA(Java Persistence API)意即Java持久化...
    fulgens閱讀 239,463評(píng)論 12 170
  • 簡(jiǎn)介: 本文由淺入深地講述了使用 Spring Data JPA 需要關(guān)注的各個(gè)方面,為讀者了解和使用該框架提供了...
    AiPuff閱讀 4,581評(píng)論 1 28
  • 近日食無(wú)味,想來(lái)身在外地且囊中羞澀,難得佳肴。又記起老家一小吃,雖非山珍海味,龍骨鳳髓,然足已使人貪,遂以文...
    敖湯閱讀 262評(píng)論 0 2
  • 很久沒(méi)有寫(xiě)自已的心思了,夜深了,輾轉(zhuǎn)難以入睡,想起了我的兒子,更是勾起萬(wàn)千心思,在外讀書(shū)的他很少給家里打電話,每次...
    鈍角閱讀 735評(píng)論 0 39

友情鏈接更多精彩內(nèi)容