JPA:條件查詢
阿新 • • 發佈:2022-05-09
Specification<MinerExceptionTable> specification = new Specification<MinerExceptionTable>() { @SneakyThrows @Override public Predicate toPredicate(Root<MinerExceptionTable> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) { List<Predicate> predicateList = new ArrayList<>(); /** * 相等=== * * @引數 X * @引數型別 */ if (StrUtil.isNotEmpty()) { predicateList.add(criteriaBuilder.equal(root.get("farmCode"), X)); } /** * not in * * @引數 XXXX * @引數型別 List */ if (CollUtil.isNotEmpty(XXXX)) { Predicate validDnaPredicate = root.get("dna").in(XXXX).not(); predicateList.add(validDnaPredicate); } /** * in * * @引數 XXXX * @引數型別 List */ if (CollUtil.isNotEmpty(XXXX)) { Predicate invalidDna = root.get("dna").in(XXXX); predicateList.add(invalidDna); } /** * 大於等於>= * * @引數 XX * @引數型別 數值 */ if (CollUtil.isNotEmpty(XX)) { predicateList.add(criteriaBuilder.greaterThanOrEqualTo(root.get("level"), XX)); } /** * 小於等於<= * * @引數 XX * @引數型別 數值 */ if (CollUtil.isNotEmpty(XX)) { predicateList.add(criteriaBuilder.lessThanOrEqualTo(root.get("level"), XX)); } /** * betweeen * * @引數 XX_1 ; XX_2 * @引數型別 數值 */ if (CollUtil.isNotEmpty(XXX_1) && CollUtil.isNotEmpty(XXX_2)) { predicateList.add(criteriaBuilder.between(root.get("level"), XX_1, XX_2)); } /** * 大於等於>= * * @引數 XXX * @引數型別 Date */ if (CollUtil.isNotEmpty(XXX)) { predicateList.add(criteriaBuilder.greaterThanOrEqualTo(root.get("level").as(Date.class), XX)); } /** * 小於等於<= * * @引數 XXX * @引數型別 Date */ if (CollUtil.isNotEmpty(XXX)) { predicateList.add(criteriaBuilder.lessThanOrEqualTo(root.get("level").as(Date.class), XX)); } /** * betweeen * * @引數 XXX_1 ; XXX_2 * @引數型別 Date */ if (CollUtil.isNotEmpty(XXX_1) && CollUtil.isNotEmpty(XXX_2)) { predicateList.add(criteriaBuilder.between(root.get("level").as(Date.class), XX_1, XX_2)); } Predicate[] pre = new Predicate[predicateList.size()]; pre = predicateList.toArray(pre); return criteriaQuery.where(pre).getRestriction(); } };