关于criteriabuilder 多个like查询拼接的问题(or不是and)

predicates.add(builder.or(builder.like(expression, "%" + vals[0] + "%"),builder.like(expression,"%"+vals[1]+"%"),.......));
builder.or里面有多个builder.like, vals是一个数组,怎么用for循环往builder.or里
面添加,才能达到我想要的效果,也就是对应的SQL为:select * from xx where name
like '%王%’or name like '%李%' or name like '%高%' or ......

2个回答

已解决:
String[] str = value.split(",");
List predicateList = new ArrayList();
Predicate [] p = new Predicate[str.length];

                            for(int i = 0; i < str.length; i++){
                                predicateList.add(builder.like(expression, "%" + str[i] + "%"));
                            }
                            predicateList.toArray(p);
                            predicates.add(builder.or(p));

是spring API的查询的话 我觉得你不需要自己写SQL
按照这样的看看
predicate.getExpressions().add(cb.equal(root.get("XX").get("XX").as(类型.class), resinformSearchVo.getInfoType()));

qq_33452266
qq_33452266 这个项目之前都是用的criteriabuilder,所以要改动会很麻烦,不过还是谢谢你
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐