最近开发一个老项目,发现用了spring data jpa,对于使用语句不是很熟悉,做一个记录整理
精确查询
if (requestVo.getUserId() != null) {
predicate.getExpressions()
.add(cb.equal(root.get("userId"), requestVo.getUserId()));
}
模糊查询
predicate.getExpressions()
.add(cb.like(root.get("name"), "%" + requestVo.getTile() + "%"));
时间区间
if (StringUtils.isNotBlank(requestVo.getStartUploadTime())) {
predicate.getExpressions()
.add(cb.greaterThanOrEqualTo(root.get("createTime").as(String.class), requestVo.getStartUploadTime()));
}
if (StringUtils.isNotBlank(requestVo.getEndUploadTime())) {
predicate.getExpressions()
.add(cb.lessThanOrEqualTo(root.get("createTime").as(String.class), requestVo.getEndUploadTime()));
}
}
in
predicate.getExpressions().add(cb.and(root.get("userId").in(userIds)));
排序
Sort sort = new Sort(Sort.Direction.DESC, "createTime");
PageRequest pageRequest = new PageRequest(num, size, new Sort(Sort.Direction.DESC, "userId"));
分页查询
Integer num = 1;
Integer size = 10;
PageRequest pageRequest = new PageRequest(num, size, new Sort(Sort.Direction.DESC, "userId"));
查询
Page<Records> page = repository.findAll(getSpecification(request), PageRequest.of(request.getPageNo() - 1, request.getPageSize(), sort));