作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Spring Boot、Spring Data 编写一个应用程序。我正在尝试实现基于不同过滤器参数的过滤功能。
我发现了 Spring Data REST 框架,它开箱即用地支持基本的过滤操作,例如:
/myEntities?field1=value1&field2=value2&sort=field2,desc&size=10&page=2
在本例中,我们仅按 2 个字段进行过滤,无需任何额外的 where 子句。
但是,如果我需要一个更复杂的过滤器,其中包含不同数量的 where 子句、顺序、实体限制,该怎么办?结果查询可能如下所示:
SELECT * FROM table
WHERE field1 != `value1` and (field1 != ` value2 `OR (field1 = `value3` AND filed2 < 3))
AND field2 != 99
是否可以使用 Spring Data Rest 的内置功能(将所有这些内容作为 http 参数发送)来实现不同 where 子句的组合?
最佳答案
您应该能够自定义存储库,以拥有包含所有必需参数的搜索方法。然后,它们将在搜索资源下暴露给 Spring Data Rest,并包含所有查询参数。
类似于:
@RestResource(path = "weirdFilter", rel = "weirdFilter")
@Query(value = "SELECT * FROM table
WHERE field1 != :value1 and (field1 != :value2 OR (field1 = :value3 AND field2 < 3))
AND field2 != 99")
public Page<Stuff> findByWeirdFilter(@Param("value1") String value1, @Param("value2") String value2, @Param("value3") String value3, Pageable p);
关于java - 是否可以在 Spring Data Rest 中使用和组合 WHERE 子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58186691/
我是一名优秀的程序员,十分优秀!