spring data JPA 中的多属性排序---养老院管理系统涉及技术整理

Posted Mark-先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring data JPA 中的多属性排序---养老院管理系统涉及技术整理相关的知识,希望对你有一定的参考价值。

在此介绍我所用的一种方式:

第一步,引包

import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Order;

第二步,service方法代码

  @Override
public Page<TurnOverRecord> findAll(Integer pageNum, Integer pageSize, TurnOverRecord turnOverRecord) {
//先按isTurnOver从小到大升序,再按turnOverTime升序
List< Order> orders=new ArrayList< Order>();
orders.add( new Order(Sort.Direction. ASC, "isTurnOver"));
orders.add( new Order(Sort.Direction. ASC, "turnOverTime"));
Pageable pageable= new PageRequest(pageNum - 1, pageSize, new Sort(orders));

Specification<TurnOverRecord> specification = new Specification<TurnOverRecord>() {
@Override
public Predicate toPredicate(Root<TurnOverRecord> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
Predicate predicate = cb.conjunction();
//单属性排序
// query.orderBy(cb.asc(root.get("isTurnOver")));
// query.orderBy(cb.desc(root.get("id")));
// query.groupBy(root.get("id"));
query.distinct(true);
//判断是否有条件
predicate.getExpressions().add(cb.equal(root.get("flag"), 1));
if (turnOverRecord != null) {
if (StringUtil.isNotNull(turnOverRecord.getMemberId())
&& StringUtil.isNotNullAndZero(turnOverRecord.getMemberId().getId())
) {
predicate.getExpressions().add(cb.equal(root.get("memberId").get("id"), turnOverRecord.getMemberId().getId()));
}
if (StringUtil.isNotNull(turnOverRecord.getMemberId())
&& StringUtil.isNotNullAndBlank(turnOverRecord.getMemberId().getName())
) {
predicate.getExpressions().add(cb.like(root.get("memberId").get("name"), "%"+turnOverRecord.getMemberId().getName().trim()+"%"));
}
if (StringUtil.isNotNull(turnOverRecord.getCreator())
&& StringUtil.isNotNullAndBlank(turnOverRecord.getCreator().getName())) {
predicate.getExpressions().add(cb.like(root.get("creator").get("name"), "%"+turnOverRecord.getCreator().getName().trim() + "%"));
}
}
return predicate;
}
};
return turnOverRecordDao.findAll(specification, pageable);
}








































以上是关于spring data JPA 中的多属性排序---养老院管理系统涉及技术整理的主要内容,如果未能解决你的问题,请参考以下文章

Spring Data JPA 按属性排序,无需硬编码

基于可编辑位置属性的 Spring Data JPA 自动排序行

Spring Data JPA - JpaRepository 中的自定义排序

Spring Data JPA 规范 - 连接中的不同+按列排序

Spring Data JPA:使用连接表进行排序和分页

Spring Data 系列学习Spring Data JPA 自定义查询,分页,排序,条件查询