如何使用许多 OR 动态构建 booleanbuilder 条件

Posted

技术标签:

【中文标题】如何使用许多 OR 动态构建 booleanbuilder 条件【英文标题】:How to dynamically build booleanbuilder condition with many ORs 【发布时间】:2019-07-01 12:58:22 【问题描述】:

我需要构建一个包含许多 OR 的 BooleanBuilder 条件。

我有一个带有 2 个输入参数的方法:

User findUser(String inputname, List<String> inputcities);

我有一个代码:

BooleanBuilder builder = new BooleanBuilder();
builder.and(user.name(inputname));

作为 OR,我应该如何为许多城市动态构建它? 检查用户是否来自数组中给出的那些城市之一? 所以数组可能包含 5、10 个城市。如何在不编码的情况下制作它?

【问题讨论】:

【参考方案1】:

假设用户实体有一个外键,引用一个城市实体,我建议你使用类似下面的sql-query:

select  u.*
  from  User u
  where u.NAME = :inputname
    and u.CITY_ID in :inputcities

实现它的最简单方法是使用 Spring Data 的 JPA 存储库。 如果这样做,您将不需要任何 BooleanBuilder 或其他自定义内容。

如果仍有不清楚的地方,请随时提问。

【讨论】:

谢谢!这部分是可以理解的。但我需要 BooleanBuilder 和 JPA 的形式。有可能吗? @jack,您是否需要多个 OR 形式的查询,或者最好使用 IN 子句? 这并不重要。两种情况都很好。就像我的主题描述中提到的那样,以 BooleanBuilder 的形式出现。 尝试使用以下代码:BooleanBuilder builder = new BooleanBuilder(user.name.eq(inputname)).and(user.city.in(inputcities));

以上是关于如何使用许多 OR 动态构建 booleanbuilder 条件的主要内容,如果未能解决你的问题,请参考以下文章

如何告诉 Dojo 构建忽略“缺失”模板

使用 javascript 动态构建 html 标题标签

shinyR - 通过文本动态引用输入字段值

SQLAlchemy 查询 - 动态类选择

如何解析 JSON 模式文件并使用许多列约束动态创建新的 Python 类?

在 WebRTC 房间中订阅/动态静音许多音频流的理想方法?