Spring

Spring Data JPA中原生SQL使用Pageable进

2018-11-24  本文已影响429人  belllee

实现方法

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

上一篇 下一篇

猜你喜欢

热点阅读