Pageable pageable = PageRequest.of(request.getPage(), request.getPageSize(),
Sort.by(Sort.Direction.DESC, "id"));
Page<UserAuthMusic> userAuthMusicPage = userAuthMusicRepo.findAll(
new Specification() {
@Override
public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) {
List<Predicate> pList = new ArrayList<Predicate>();
Predicate[] ps = new Predicate[pList.size()];
//标题
if (request.getTitle() != null && !"".equals(request.getTitle())) {
pListOr.add(cb.like(root.get("title").as(String.class), "%" + request.getTitle() + "%"));
}
//用户昵称
if (request.getNickName() != null && !"".equals(request.getNickName())) {
CriteriaBuilder.In<Integer> inGetUidByNickName = cb.in(root.get("uid"));
List<User> userList = userRepo.findAllByNickNameLike("%" + request.getNickName() + "%");
if (userList != null && userList.size() > 0) {
for (User user : userList) {
if (user != null) {
inGetUidByNickName.value(user.getId());
}
}
pList.add(inGetUidByNickName);
} else {
pList.add(cb.equal(root.get("uid").as(String.class), 0));
}
}
//开始日期
if (request.getCreateBeginTime() != null && !"".equals(request.getCreateBeginTime())) {
pList.add(cb.greaterThanOrEqualTo(root.get("createTime").as(String.class), request.getCreateBeginTime()));
}
//结束日期
if (request.getCreateEndTime() != null && !"".equals(request.getCreateEndTime())) {
pList.add(cb.lessThanOrEqualTo(root.get("createTime").as(String.class), request.getCreateEndTime()));
}
query.where(pList.toArray(ps));
return null;
}
}, pageable);