用Specification 多条件查询的时候 怎么实现 where id = ?1 and (name like ?2 or age like?3)

上班杀人 发布于 2013/05/20 14:34
阅读 2K+
收藏 0

@江南白衣 你好,想跟你请教个问题:用Specification 多条件查询的时候   怎么实现  where id = ?1 and (name like ?2 or age like?3)  就是前面的id条件是必须相等的   在这个基础上  后面的模糊查询条件是or的关系

有什么方法解决么

加载中
0
P
Patrick-v
xxxDao.findAll(new Specification<Loan>(){           
@Override
public Predicate toPredicate(Root<Loan> root, CriteriaQuery<?> query,
CriteriaBuilder builder) {
//result1 自动处理的查询条件
               Predicate result1 = DynamicSpecifications.bySearchFilter(filters.values(), Loan.class).toPredicate(root, query, builder); 
               //result2 特殊处理的查询条件 添加 and (xxx or xxxx) 查询条件
               Predicate result2=null;
               
               //特殊查询条件 
                                 
               Predicate p1 = builder.like(root.get("name"), "xxx");//
               Predicate p2 = builder.like(root.get("age"), "xxx"); //待重签 
               result2 = builder.or(p1,p2);  //or
                             //测试字段运算查询                
               result2 = builder.and(p1); 
               
               if(result2!=null){
                return builder.and(result1,result2);
               }else{
                return result1;
               }
}
              
          }, pageRequest);
返回顶部
顶部