其他分享
首页 > 其他分享> > 39-动态查询完成多条件拼接

39-动态查询完成多条件拼接

作者:互联网

/*
    动态查询完成多条件拼接
     */
    @Test
    public void testSpec1(){
        /*
        root:获取属性
            客户名
            所属行业

        criteriaBuilder:构造查询:
            1、构造客户名的精确匹配查询
            2、构造所属行业的精确匹配查询
            3、将以上两个查询联系起来
         */
        Specification<Customer> spec = new Specification<Customer>() {
            @Override
            public Predicate toPredicate(Root<Customer> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
                Path<Object> custName = root.get("custName");//客户名
                Path<Object> custIndustry = root.get("custIndustry");//所属行业

                //构造查询
                //1、构造客户名的精确匹配查询
                Predicate p1 = criteriaBuilder.equal(custName, "戴庆贺");
                //2、构造所属行业的精确匹配查询
                Predicate p2 = criteriaBuilder.equal(custIndustry, "it教育");
                //3、将多个查询条件组合到一起(满足条件一并且满足条件二:与关系,满足条件一或者满足条件二:或关系)
                Predicate and = criteriaBuilder.and(p1, p2);//与拼接
//                criteriaBuilder.or();//或拼接
                return and;
            }
        };
        Optional<Customer> one = customerDao.findOne(spec);
        System.out.println(one);
    }

标签:满足条件,39,Predicate,构造,查询,拼接,criteriaBuilder,root
来源: https://www.cnblogs.com/morehair/p/15509817.html