分页与排序
表person对应的model类:
@Entity
@Table(name = "person")
public class Person {
@Id
@GeneratedValue
private Long id;
private Integer age;
private String name;
@Column(name = "nick_name")
private String nickName;
private String company;
private Date birthday;
// getter and setter
}
数据库访问PersonRepository类:public interface PersonRepository extends JpaRepository<Person, Long>, JpaSpecificationExecutor<Person> {
}
查询如果姓名不为空则按照姓名倒序先排序,然后按照生日升序排序,分页大小15。
public Page<Person> findAll(SearchRequest request) {
Specification<Person> specification = new Specifications<Person>()
.eq(StringUtils.isNotBlank(request.getName()), "name", request.getName())
.gt("age", 18)
.between("birthday", new Range<>(new Date(), new Date()))
.like("nickName", "%og%")
.build();
Sort sort = new Sorts()
.desc(StringUtils.isNotBlank(request.getName()), "name")
.asc("birthday")
.build();
return personRepository.findAll(specification, new PageRequest(0, 15, sort));
}