微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 spring/querydsl

如何解决使用 spring/querydsl

我使用带有 Web 支持的 Spring Data/QueryDSL,使用注释 @EnableSpringDataWebSupport。 这很有效,并自动将 GET 查询映射到 Predicate。我可以使用以下查询搜索我的 DTP 对象:

http://localhost/search/dtp?name=foo

我现在需要添加更复杂的查询,例如 AND 或 OR 子句。

我发现这个库似乎实现了我想要的:spring-data-querydsl-value-operators

我的理解是,我需要将以下代码添加到我的 Repository 接口中以利用此库:

@Override
default void customize(QuerydslBindings bindings,QDtp root) {
    bindings.bind(root.name).all(ExpressionProviderFactory::getPredicate);
    bindings.bind(root.description).all(ExpressionProviderFactory::getPredicate);
    ...
}

但是我以前不需要 customize() 方法,现在看来我需要为我的对象的所有字段和子字段设置这些新绑定。这可能会导致维护问题:如果添加一个新字段,但开发人员忘记添加此绑定,那么对该字段的搜索将无法像其他字段一样进行。

以前不是这样。

如何才能使这些绑定通用并应用于对象的所有字段和子字段?

解决方法

我认为你可以使用这个库:https://github.com/turkraft/spring-filter

它将让您运行搜索查询,例如:

/search?filter= average(评分)> 4.5 brand.name ('奥迪'、'路虎')(年份> 2018公里 50000)和颜色“白色”事故为空

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。