美文网首页Spring
Spring Data JPA中原生SQL使用Pageable进

Spring Data JPA中原生SQL使用Pageable进

作者: belllee | 来源:发表于2018-11-24 14:47 被阅读429次

实现方法

在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进行排序,就会产生冲突。所以只能二选一。

相关文章

网友评论

    本文标题:Spring Data JPA中原生SQL使用Pageable进

    本文链接:https://www.haomeiwen.com/subject/egfyqqtx.html