本文共 1729 字,大约阅读时间需要 5 分钟。
/** * 动态生成where语句 * @param searchArticle * @return */private SpecificationgetWhereClause(final SearchArticle searchArticle){ return new Specification () { @Override public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { List predicate = new ArrayList<>(); if(searchArticle.getPostTimeStart()!=null){ predicate.add(cb.greaterThanOrEqualTo(root.get("postTime").as(Date.class), searchArticle.getPostTimeStart())); } if(searchArticle.getPostTimeEnd()!=null){ predicate.add(cb.lessThanOrEqualTo(root.get("postTime").as(Date.class), searchArticle.getPostTimeEnd())); } if(searchArticle.getRecTimeStart()!=null){ predicate.add(cb.greaterThanOrEqualTo(root.get("recommendTime").as(Date.class), searchArticle.getRecTimeStart())); } if (searchArticle.getRecTimeEnd()!=null){ predicate.add(cb.lessThanOrEqualTo(root.get("recommendTime").as(Date.class), searchArticle.getRecTimeEnd())); } if (StringUtils.isNotBlank(searchArticle.getNickname())){ //两张表关联查询 Join userJoin = root.join(root.getModel().getSingularAttribute("user",User.class),JoinType.LEFT); predicate.add(cb.like(userJoin.get("nickname").as(String.class), "%" + searchArticle.getNickname() + "%")); } Predicate[] pre = new Predicate[predicate.size()]; return query.where(predicate.toArray(pre)).getRestriction(); } }; }
详情见 :
转载地址:http://mxwli.baihongyu.com/