spring data jpa 分页查询

Posted 追极

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring data jpa 分页查询相关的知识,希望对你有一定的参考价值。

法一(本地sql查询,注意表名啥的都用数据库中的名称)

public interface UserRepository extends JpaRepository<User, Long> {

  @Query(value = "SELECT * FROM USERS WHERE LASTNAME = ?1",
    countQuery = "SELECT count(*) FROM USERS WHERE LASTNAME = ?1",
    nativeQuery = true)
  Page<User> findByLastname(String lastname, Pageable pageable);
}

 

法二(jpa已经实现的分页接口)

public interface PagingAndSortingRepository<T, ID extends Serializable>
  extends CrudRepository<T, ID> {

  Iterable<T> findAll(Sort sort);

  Page<T> findAll(Pageable pageable);
}

Accessing the second page of User by a page size of 20 you could simply do something like this:

PagingAndSortingRepository<User, Long> repository = // … get access to a bean
Page<User> users = repository.findAll(new PageRequest(1, 20));
User findFirstByOrderByLastnameAsc();

User findTopByOrderByAgeDesc();

Page<User> queryFirst10ByLastname(String lastname, Pageable pageable);

Slice<User> findTop3ByLastname(String lastname, Pageable pageable);

List<User> findFirst10ByLastname(String lastname, Sort sort);

List<User> findTop10ByLastname(String lastname, Pageable pageable);

 

法三(Query注解,jpa语局)

 @Query(value = "select b.roomUid from RoomBoard b where b.userId=:userId and b.lastBoard=true order by  b.createTime desc")
    Page<String> findRoomUidsByUserIdPageable(@Param("userId") long userId, Pageable pageable);
Pageable pageable = new PageRequest(pageNumber,pageSize);
Page<String> page = this.roomBoardRepository.findRoomUidsByUserIdPageable(userId,pageable);
List<String> roomUids = page.getContent();

可以自定义整个实体(Page<User>),也可以查询某几个字段(Page<Object[]>),和原生sql几乎一样灵活。

 

法四(扩充findAll)

Page<User> findAll(Specification<User> spec, Pageable pageable);

 

以上是关于spring data jpa 分页查询的主要内容,如果未能解决你的问题,请参考以下文章

spring data jpa 的分页以及条件查询

spring data jpa Specification 复杂查询+分页查询

Spring Data 系列学习Spring Data JPA 自定义查询,分页,排序,条件查询

spring data jpa 分页查询

Spring Data JPA中带条件的分页查询

Spring Data 系列学习Spring Data JPA 自定义查询,分页,排序,条件查询