jap 复合查询

     @Override
public Page<Document> searchSendDocument(Long sendUserId, Long sendGroupId,String title,
String content, Date stDate, Date spDate, int pageNum,
int numPerPage) {

final String titl1F = title;
final String contentF = content;
final Date stDateF = stDate;
final Date spDateF = spDate;
final Long sendUserIdF = sendUserId;
final Long sendGroupIdF = sendGroupId;
Sort sort = new Sort(Direction.DESC, "id");
Pageable pageRequest = new PageRequest(pageNum - 1, numPerPage, sort);

Specification<Document> spec = new Specification<Document>() {
@Override
public Predicate toPredicate(Root<Document> root,
CriteriaQuery<?> query, CriteriaBuilder cb) {

List<Predicate> predicate = new ArrayList<>();
if (titl1F != null && titl1F.trim().length() > 0) {
predicate.add(cb.like(root.get("title").as(String.class),
"%" + titl1F.trim() + "%"));
}
if (contentF != null && contentF.trim().length() > 0) {
predicate.add(cb.like(root.get("message").as(String.class),
"%" + contentF.trim() + "%"));
}
if (sendUserIdF != SearchEnum.SEARCH_ALL.getId()) {
predicate.add(cb.equal(root.get("userId").as(Long.class),
sendUserIdF));
}
predicate.add(cb.equal(root.get("isState").as(Integer.class),
DocumentEnum.VIEW.getCode()));
predicate.add(cb.equal(root.get("groupId").as(Long.class),
sendGroupIdF));

predicate.add(cb.between(root.get("sendDate").as(Date.class),
stDateF, spDateF));
Predicate[] pre = new Predicate[predicate.size()];
return query.where(predicate.toArray(pre)).getRestriction();
}
};

return documentDao.findAll(spec, pageRequest);
}
阅读更多
个人分类: java spring
上一篇深入浅出学Spring Data JPA
下一篇SpringMVC 使用JSR-303进行校验 @Valid
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭