JPA的JpaSpecificationExecutor 条件编写方式

条件过滤

Specification specification = new Specification() {
@SneakyThrows
@Override
public Predicate toPredicate(Root root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
List 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();
}

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值