我如何有效地处理资源 class 中的多个查询参数组合?

How can i handle multiple combinations of query parameters in a resource class efficiently?

我有这样的情况,我需要为我们的 API 编写资源 类,它需要四个以上的查询参数,我需要编写的 if else 语句的数量是相当于所有这些查询参数的幂集的基数,所以如果有 4 个查询参数,我需要写 16 个 if else 语句,5 -> 36 等

有没有更好的方法来做我想做的事情? Stream API 不是一个好的选择,因为这是一个企业应用程序,实体数量为 30000 甚至更多,并且有很多用户使用 API我们过去有 OutOfMemoryError

我正在使用 Querydsl,但我无法将 null 值传递给 eq() 方法。

我将参数从控制器传递到外观并使用 Querydsl

执行以下操作
public List<Entity> findAll(Optional<Integer> opId, Optional<String> opName) {
    final QEntity q = QEntity.entity;

    final BooleanBuilder where = new BooleanBuilder();

    opId.ifPresent(id -> where.and(q.id.eq(id)));
    opName.ifPresent(name -> where.and(q.name.eq(name)));
        
    return new JPAQuery.where(where).list(q);
}