spring data 接口之 PagingAndSortingRepository

PagingAndSortingRepository 接口继承于 CrudRepository 接口,拥有CrudRepository 接口的所有方法, 并新增两个方法:分页和排序。 但是这两个方法不能包含筛选条件。
[java] view plain copy
  1. Iterable findAll(Sort sort); //查询所有,排序,不进行分页  
  2. ;T> findAll(Pageable pageable);  

一 声明继承PagingAndSortingRepository接口的接口:IStudentdPageSortRepository

[java] view plain copy
  1. package org.zgf.spring.data.dao;  
  2.   
  3. import org.springframework.data.repository.PagingAndSortingRepository;  
  4. import org.zgf.spring.data.entity.StudentPO;  
  5. /** 
  6.  * 继承PagingAndSortingRepository 接口 
  7.  * @author: zonggf 
  8.  * @date: 2016年1月15日-下午12:58:20 
  9.  */  
  10. public interface IStudentdPageSortRepository extends PagingAndSortingRepository{  
  11.   
  12.     /**  PagingAndSortingRepository 接口继承于 CrudRepository 接口,拥有CrudRepository 接口的所有方法 
  13.      *   特有方法有两个 分页,和 排序, 这两个方法的缺陷是不能有筛选条件 
  14.      */  
  15.     //Iterable findAll(Sort sort); //查询所有,排序,不进行分页  
  16.     //Page findAll(Pageable pageable);  
  17. }  

二 测试类
[java] view plain copy
  1. package org.zgf.spring.data.dao;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import javax.naming.directory.DirContext;  
  7.   
  8. import org.junit.Test;  
  9. import org.springframework.beans.factory.annotation.Autowired;  
  10. import org.springframework.data.domain.Page;  
  11. import org.springframework.data.domain.PageRequest;  
  12. import org.springframework.data.domain.Sort;  
  13. import org.springframework.data.domain.Sort.Direction;  
  14. import org.springframework.data.domain.Sort.Order;  
  15. import org.zgf.spring.data.base.BaseTest;  
  16. import org.zgf.spring.data.dao.IStudentdPageSortRepository;  
  17. import org.zgf.spring.data.entity.StudentPO;  
  18.   
  19. /** 
  20.  * @ClassName: Test_IStudentdPageSortRepository 
  21.  * @Description: 测试分页排序 
  22.  * @author: zonggf 
  23.  * @date: 2016年1月15日-下午1:01:46 
  24.  */  
  25. public class Test_IStudentdPageSortRepository extends BaseTest{  
  26.       
  27.     @Autowired  
  28.     private IStudentdPageSortRepository studentdPageSortRepository;  
  29.       
  30.       
  31.     /** 
  32.      * 查询所有记录,指定排序方式,不能自定义查询条件 
  33.      * Hibernate: select studentpo0_.id as id1_0_, studentpo0_.age as age2_0_, studentpo0_.birth as birth3_0_, studentpo0_.create_time as create_t4_0_, studentpo0_.name as name5_0_, studentpo0_.sex as sex6_0_ from spj_student_2 studentpo0_ order by studentpo0_.id desc, studentpo0_.name desc 
  34.      */  
  35.     @Test  
  36.     public void test_findAll_Sort(){  
  37.         Order idOrder = new Order(Direction.DESC, "id");  
  38.         Order nameOrder = new Order(Direction.DESC,"name");  
  39.           
  40.         Sort sort = new Sort(idOrder, nameOrder);  
  41.         List students = (Listthis.studentdPageSortRepository.findAll(sort);  
  42.         for (StudentPO studentPO : students) {  
  43.             System.out.println(studentPO);  
  44.         }  
  45.     }  
  46.       
  47.       
  48.     /** 
  49.      * 此种排序方式不能指定筛选条件 
  50.      * 排序会执行两条sql 语句 
  51.      * Hibernate: select count(*) as col_0_0_ from spj_student_2 studentpo0_ 
  52.      * Hibernate: select studentpo0_.id as id1_0_, studentpo0_.age as age2_0_, studentpo0_.birth as birth3_0_, studentpo0_.create_time as create_t4_0_, studentpo0_.name as name5_0_, studentpo0_.sex as sex6_0_ from spj_student_2 studentpo0_ order by studentpo0_.id desc, studentpo0_.name asc limit ? 
  53.      */  
  54.     @Test  
  55.     public void test_findAll_page(){  
  56.         int currentPage =0//当前页从0 开始  
  57.         int pageSize = 5;  
  58.           
  59.         //排序  
  60.         Order idOrder = new Order(Direction.DESC, "id");  
  61.         Order nameOrder = new Order(Direction.ASC,"name");  
  62.         Sort sort = new Sort(idOrder,nameOrder);  
  63.         PageRequest pageRequest  = new PageRequest(currentPage, pageSize, sort);  
  64.           
  65.         Page page = this.studentdPageSortRepository.findAll(pageRequest);  
  66.         System.out.println("总记录数:" + page.getTotalElements());  
  67.         System.out.println("总页数:" + page.getTotalPages());  
  68.         System.out.println("当前页(request):" + page.getNumber());  
  69.         System.out.println("当前页总记录数(request):" + page.getSize());  
  70.         System.out.println("当前页记录总数:" + page.getNumberOfElements());  
  71.         List students = page.getContent();  
  72.         for (StudentPO studentPO : students) {  
  73.             System.out.println(studentPO);  
  74.         }  
  75.     }  
  76.       
  77. }

你可能感兴趣的:(spring,boot)