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