如何使用许多 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 条件的主要内容,如果未能解决你的问题,请参考以下文章