拿去不谢!
Service Impl:
/**
* sample method for JPA multi params query
* */
public Page<AfPlan> getPlanListByMultiParams(final String name, Integer pageNum, Integer pageSize) {
Pageable pageable = PageRequest.of(pageNum, pageSize, Sort.Direction.ASC, "id");
Specification<AfPlan> specification = new Specification<AfPlan>() {
List<Predicate> predicates = new ArrayList<Predicate>();
@Nullable
@Override
public Predicate toPredicate(Root<AfPlan> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
if (StringUtils.isNotEmpty(name)) {
predicates.add(criteriaBuilder.equal(root.get("name").as(String.class), name));
}
Predicate[] predicatesArray = new Predicate[predicates.size()];
return criteriaBuilder.and(predicates.toArray(predicatesArray));
}
};
Page<AfPlan> afPlans = afPlanRepo.findAll(specification, pageable);
return afPlans;
}
Repository class:
import com.*.entity.AfPlan;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
public interface AfPlanRepo extends JpaRepository<AfPlan, Long> {
Page<AfPlan> findAll(Specification<AfPlan> specification, Pageable pageable);
}
like 和 in (未经测试)
private Page<RepayPlan> getRepayPlans(final String loanBillNo, final String customerName,
final String[] repayStatusArray, final Integer pageNum, final Integer pageSize) {
Pageable pageable = PageRequest.of(pageNum, pageSize, Sort.Direction.DESC, "repay_date");
Specification<RepayPlan> specification = (Specification<RepayPlan>) (root, criteriaQuery, criteriaBuilder) -> {
List<Predicate> predicates = new ArrayList<>();
if (Objects.nonNull(loanBillNo)) {
predicates.add(criteriaBuilder.equal(root.get("loanBillNo"), loanBillNo));
}
if (StringUtils.isEmpty(customerName)) {
predicates.add(criteriaBuilder.like(root.get("customerName"), "%" + customerName + "%"));
}
if (Objects.nonNull(repayStatusArray)) {
CriteriaBuilder.In<Object> in = criteriaBuilder.in(root.get("repayStatus"));
for (String status : repayStatusArray) {
in.value(status);
}
predicates.add(in);
}
return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));
};
return repayPlanRepo.findAll(specification, pageable);
}
PS: 真是受不了, 好多帖子写的让人难受, 要写就好好写.要给代码就给全, 不给参数, 命名不规范. 各种毛病. 你自己过段时间看都难受. 没有个好的做笔记的习惯,技术成长也很慢吧.
还有那些个网站,广告闪的,把人恶心的.对,我说的就是CSDN! 建议大家出逃.