package com.example.university.repo; import com.example.university.domain.Staff; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.repository.PagingAndSortingRepository; public interface StaffRepository extends PagingAndSortingRepository<Staff,Integer> { }
public interface CourseRepository extends CrudRepository<Course,Integer>{ List<Course> findByCredits(@Param("credits") int credits); Page<Course> findByCredits(@Param("credits") int credits, Pageable pageable); }
Usage:
@Test
public void pagingAndSortingQueries() {
System.out.println("
Find all 3-credit courses");
courseRepository.findByCredits(3).forEach(System.out::println);
System.out.println("
Find first 4 3-credit courses, sort by credit, then course name");
Page<Course> courses = courseRepository.findByCredits(3,
PageRequest.of(0, 4, Sort.Direction.ASC, "credits", "name"));
courses.forEach(System.out::println);
System.out.println("
Find all staff members, sort alphabetically by last name");
Sort sortByLastName = new Sort(Sort.Direction.ASC, "member.lastName");
staffRepository.findAll(sortByLastName).forEach(System.out::println);
Page<Staff> members = staffRepository.findAll(PageRequest.of(0, 5, sortByLastName));
System.out.println("
Total number of staff members=" + members.getTotalElements());
System.out.println("Total number of 5-element-pages=" + members.getTotalPages());
System.out.println("Find first 5 Staff members, sort alphabetically by last name");
members.forEach(System.out::println);
}