我如何有效地处理资源 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);
}
我有这样的情况,我需要为我们的 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);
}