@Override
public ResponseData getDetails(SearchParam param) {
QProblemPoint qProblemPoint = QProblemPoint.problemPoint;
Map<String,String> map = getWhere(param);
// import com.querydsl.core.types.ExpressionUtils;
// import com.querydsl.core.types.Predicate;
Predicate predicate = qProblemPoint.isNotNull().or(qProblemPoint.isNull());
predicate = map.get("problemClassify").equals("") ? predicate : ExpressionUtils.and(predicate,qProblemPoint.problemClassify.eq(map.get("problemClassify")));
predicate = map.get("problemLevel").equals("") ? predicate : ExpressionUtils.and(predicate,qProblemPoint.problemLevel.eq(map.get("problemLevel")));
predicate = map.get("securityRiskEvent").equals("") ? predicate : ExpressionUtils.and(predicate,qProblemPoint.securityRiskEvent.eq(map.get("securityRiskEvent")));
predicate = map.get("riskItems").equals("") ? predicate : ExpressionUtils.and(predicate,qProblemPoint.riskItems.eq(map.get("riskItems")));
//内容或编号
predicate = map.get("number").equals("") ? predicate : ExpressionUtils.and(predicate,qProblemPoint.number.like("%"+map.get("number")+"%"));
predicate = map.get("riskPointDesc").equals("") ? predicate : ExpressionUtils.or(predicate,qProblemPoint.riskPointDesc.like("%"+map.get("riskPointDesc")+"%"));
JPAQuery<ProblemPoint> query = jpaQueryFactory
.selectFrom(qProblemPoint)
.where(predicate);
List<ProblemPoint> list = query
.offset(param.getStart())
.limit(param.getLength()).fetch();
long count = query.fetchCount();
ResponseData res = new ResponseData();
res.setData(list);
res.setRecordsTotal(count);
res.setDraw(param.getDraw());
res.setRecordsFiltered(count);
return res;
}
使用Predicate构造

本文介绍如何使用QueryDSL库中的Predicate来构建复杂的查询条件,通过示例代码展示了如何根据不同的参数组合形成查询逻辑,适用于需要高级搜索功能的应用场景。
2440

被折叠的 条评论
为什么被折叠?



