spring data 接口之 PagingAndSortingRepository

来源:互联网 发布:php 邮件内容html输出 编辑:程序博客网 时间:2024/05/17 23:19

        PagingAndSortingRepository 接口继承于 CrudRepository 接口,拥有CrudRepository 接口的所有方法, 并新增两个方法:分页和排序。 但是这两个方法不能包含筛选条件。

          Iterable<T> findAll(Sort sort); //查询所有,排序,不进行分页  Page<T> findAll(Pageable pageable);

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

package org.zgf.spring.data.dao;import org.springframework.data.repository.PagingAndSortingRepository;import org.zgf.spring.data.entity.StudentPO;/** * 继承PagingAndSortingRepository 接口 * @author: zonggf * @date: 2016年1月15日-下午12:58:20 */public interface IStudentdPageSortRepository extends PagingAndSortingRepository<StudentPO, Integer>{/**  PagingAndSortingRepository 接口继承于 CrudRepository 接口,拥有CrudRepository 接口的所有方法 *   特有方法有两个 分页,和 排序, 这两个方法的缺陷是不能有筛选条件 *///Iterable<T> findAll(Sort sort); //查询所有,排序,不进行分页//Page<T> findAll(Pageable pageable);}

二 测试类

package org.zgf.spring.data.dao;import java.util.ArrayList;import java.util.List;import javax.naming.directory.DirContext;import org.junit.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.domain.Page;import org.springframework.data.domain.PageRequest;import org.springframework.data.domain.Sort;import org.springframework.data.domain.Sort.Direction;import org.springframework.data.domain.Sort.Order;import org.zgf.spring.data.base.BaseTest;import org.zgf.spring.data.dao.IStudentdPageSortRepository;import org.zgf.spring.data.entity.StudentPO;/** * @ClassName: Test_IStudentdPageSortRepository * @Description: 测试分页排序 * @author: zonggf * @date: 2016年1月15日-下午1:01:46 */public class Test_IStudentdPageSortRepository extends BaseTest{@Autowiredprivate IStudentdPageSortRepository studentdPageSortRepository;/** * 查询所有记录,指定排序方式,不能自定义查询条件 * 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 */@Testpublic void test_findAll_Sort(){Order idOrder = new Order(Direction.DESC, "id");Order nameOrder = new Order(Direction.DESC,"name");Sort sort = new Sort(idOrder, nameOrder);List<StudentPO> students = (List<StudentPO>) this.studentdPageSortRepository.findAll(sort);for (StudentPO studentPO : students) {System.out.println(studentPO);}}/** * 此种排序方式不能指定筛选条件 * 排序会执行两条sql 语句 * Hibernate: select count(*) as col_0_0_ from spj_student_2 studentpo0_ * 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 ? */@Testpublic void test_findAll_page(){int currentPage =0; //当前页从0 开始int pageSize = 5;//排序Order idOrder = new Order(Direction.DESC, "id");Order nameOrder = new Order(Direction.ASC,"name");Sort sort = new Sort(idOrder,nameOrder);PageRequest pageRequest  = new PageRequest(currentPage, pageSize, sort);Page<StudentPO> page = this.studentdPageSortRepository.findAll(pageRequest);System.out.println("总记录数:" + page.getTotalElements());System.out.println("总页数:" + page.getTotalPages());System.out.println("当前页(request):" + page.getNumber());System.out.println("当前页总记录数(request):" + page.getSize());System.out.println("当前页记录总数:" + page.getNumberOfElements());List<StudentPO> students = page.getContent();for (StudentPO studentPO : students) {System.out.println(studentPO);}}}


0 0
原创粉丝点击