第一种
时间:2018-11-13 17:17:47 提交
Pageable pageable = PageRequest.of(pageQueryDto.getPage() - 1, pageQueryDto.getSize(), Sort.Direction.fromString(pageQueryDto.getDirection()), pageQueryDto.getProperty());
Page<Project> page = projectRepository.findAll((root, query, cb) -> {
List<Predicate> list = new ArrayList<Predicate>();
CriteriaBuilder.In<Long> in = cb.in(root.get("f").get("id"));
for (F f : pageQueryDto.getList()) {
in.value(f.getId());
}
list.add(in);
Predicate[] p = new Predicate[list.size()];
return cb.and(list.toArray(p));
}, pageable);
===2019年4月25日10:36:46 更新
第二种
Pageable pageable = PageRequest.of(pageQueryDto.getPage() - 1, pageQueryDto.getSize(), Sort.Direction.fromString(pageQueryDto.getDirection()), pageQueryDto.getProperty());
Page<Project> page = projectRepository.findAll((root, query, cb) -> {
Predicate predicate = root.isNotNull();
predicate = cb.and(predicate, cb.and(root.get("id").as(Long.class).in(pageQueryDto.getList())));
return predicate;
}, pageable);
第三种
// pageQueryDto为入参 可以拿到数组信息
Pageable pageable = PageRequest.of(pageQueryDto.getPage() - 1, pageQueryDto.getSize(), Sort.Direction.fromString(pageQueryDto.getDirection()), pageQueryDto.getProperty());
Page<Project> page = projectRepository.findAll((root, query, cb) -> {
Predicate predicate = root.isNotNull();
CriteriaBuilder.In in = cb.in(root.get("id").as(Long.class));
for (Long id : pageQueryDto.getList()) {
in.value(id);
}
predicate = cb.and(predicate, in);
return predicate;
}, pageable);
推荐第二种做法