zoukankan      html  css  js  c++  java
  • Spring Data Jpa使用——Specification条件查询使用方法(等于;大于;小于;in;not in;between)

    背景

    • 在使用Spring Data Jpa中的Specification进行多条件查询时的各种条件处理

    实例

    • 以下实例中的查询条件包括(等于;大于;小于;in;not in;between)
    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();
        }
    };
  • 相关阅读:
    js的基本数据类型有哪些?
    页面优化的方式有哪些?
    为什么要用rem
    sass开发过程中遇到的几个坑
    js事件监听
    js数组去重的方法
    什么是怪异盒模型
    Cookie SameSite属性介绍及其在ASP.NET项目中的应用
    HttpServlet在第一个Servlet程序中的知识点
    Myeclipse 2017 创建第一个servlet步骤
  • 原文地址:https://www.cnblogs.com/zuiyue_jing/p/15149511.html
Copyright © 2011-2022 走看看