【发布时间】:2018-05-23 03:18:26
【问题描述】:
我正在尝试在服务器端实现分页以及过滤器。
我通过这两种方式来实现。我正在使用弹簧数据 jpa。
1.使用JpaSpecificationExecutor并编写规范
2.使用QueryDslPredicateExecutor,使用QueryDSL编写谓词。
我从 JpaSpecificationExecutor 开始,但发现它很复杂。
这是我的规范类:
公共类TransmissionSearchSpecification 实现规范{
private TransmissionSearch criteria;
public TransmissionSearchSpecification(TransmissionSearch ts) {
criteria= ts;
}
@Override
public Predicate toPredicate(Root<TransmissionView> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder builder) {
Path<String> thirdParty = root.get(TransmissionView_.thirdPartyName);
final List<Predicate> predicates = new ArrayList<Predicate>();
if(criteria.getThirdPartyName() !=null) {
predicates.add(builder.equal(thirdParty, criteria.getThirdPartyName()));
}
return builder.and(predicates.toArray(new Predicate[predicates.size()]));
}
公共类传输控制器 {
private final TransmissionViewService transmissionViewService;
public TransmissionController(TransmissionViewService transmissionViewService) {
this.transmissionViewService = transmissionViewService;
}
@RequestMapping("/transmissions/search")
@GetMapping
public ResponseEntity<Page<TransmissionView>> getTransmissions(TransmissionSearch transmissionSearch, Pageable pageable){
Page<TransmissionView> transmissions = transmissionViewService.findTransmissions(pageable);
if(!CollectionUtils.isEmpty(transmissions.getContent())) {
return new ResponseEntity<>(transmissions, HttpStatus.OK);
} else {
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
}
有没有其他方法可以缓解过滤和分页。请建议。 提前致谢
【问题讨论】:
-
不要忘记接受/支持对您有帮助的答案... ;)
标签: sorting pagination spring-data-jpa