@Test
public void testPagingAndSortingRespository(){
int pageNo = 6 - 1;
int pageSize = 5;
Order order1 = new Order(Direction.DESC, "id");
Order order2 = new Order(Direction.ASC, "email");
Sort sort = new Sort(order1, order2);
PageRequest pageable = new PageRequest(pageNo, pageSize, sort);
Page<Person> page = personRepsotory.findAll(pageable);
System.out.println("总记录数: " + page.getTotalElements());
System.out.println("当前第几页: " + (page.getNumber() + 1));
System.out.println("总页数: " + page.getTotalPages());
System.out.println("当前页面的 List: " + page.getContent());
System.out.println("当前页面的记录数: " + page.getNumberOfElements());
}
上面的分页不能带查询条件,带条件的查询方法为:
@Test
public void testJpaSpecificationExecutor(){
int pageNo = 3 - 1;
int pageSize = 5;
PageRequest pageable = new PageRequest(pageNo, pageSize);
Specification<Person> specification = new Specification<Person>() {
@Override
public Predicate toPredicate(Root<Person> root,
CriteriaQuery<?> query, CriteriaBuilder cb) {
Path path = root.get("id");
Predicate predicate = cb.gt(path, 5);
return predicate;
}
};
Page<Person> page = personRepsotory.findAll(specification, pageable);
System.out.println("总记录数: " + page.getTotalElements());
System.out.println("当前第几页: " + (page.getNumber() + 1));
System.out.println("总页数: " + page.getTotalPages());
System.out.println("当前页面的 List: " + page.getContent());
System.out.println("当前页面的记录数: " + page.getNumberOfElements());
}
@Test
public void test6(){
Specification<Books> specification=new Specification<Books>() {
public Predicate toPredicate(Root<Books> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
Path<Object> name=root.get("name");
Predicate predicate=criteriaBuilder.like(name.as(String.class),"%j%");
return predicate;
}
};
Sort sort =new Sort(Direction.DESC,"buytime");
Pageable pageable=new PageRequest(0,3,sort);
Page<Books> page =booksDao.findAll(specification,pageable);
List<Books> books =page.getContent();
for (Books book: books) {
System.out.println(book.getName()+","+book.getAuthor()+","+book.getBuytime());
}
}