Spring Data JPA中原生SQL使用Pageable进行分页的方法

实现方法

在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);

实现要点:

  1. 在查询语句结尾增加\n#pageable\n 传入分页信息
  2. 增加countQuery属性,用于总数的统计

注意事项

由于Pageable参数支持排序功能,如果在sql语句中同时使用了ORDER进行排序,就会产生冲突。所以只能二选一。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Data Jpa 简介 JPA JPA(Java Persistence API)意即Java持久化...
    fulgens阅读 239,299评论 12 170
  • 简介: 本文由浅入深地讲述了使用 Spring Data JPA 需要关注的各个方面,为读者了解和使用该框架提供了...
    AiPuff阅读 9,951评论 1 28
  • 近日食无味,想来身在外地且囊中羞涩,难得佳肴。又记起老家一小吃,虽非山珍海味,龙骨凤髓,然足已使人贪,遂以文...
    敖汤阅读 1,652评论 0 2
  • 很久沒有写自已的心思了,夜深了,辗转难以入睡,想起了我的儿子,更是勾起万千心思,在外读书的他很少给家里打电话,每次...
    钝角阅读 3,961评论 0 39

友情链接更多精彩内容