gpt4 book ai didi

java - 如何使用 Spring Data REST 进行高级搜索?

转载 作者:IT老高 更新时间:2023-10-28 13:56:48 26 4
gpt4 key购买 nike

我的任务是使用 Spring Data REST 进行高级搜索。如何实现?

我设法制作了一种方法来进行简单的搜索,比如这个:

public interface ExampleRepository extends CrudRepository<Example, UUID>{

@RestResource(path="searchByName", rel="searchByName")
Example findByExampleName(@Param("example") String exampleName);

}

如果我只需要访问 url,这个例子就完美了:

.../api/examples/search/searchByName?example=myExample

但是如果要搜索的字段不止一个,我该怎么办?

例如,如果我的 Example 类有 5 个字段,我应该使用什么实现来对所有可能的字段进行高级搜索?

考虑这个:

.../api/examples/search/searchByName?filed1=value1&field2=value2&field4=value4

还有这个:

.../api/examples/search/searchByName?filed1=value1&field3=value3

我必须做些什么才能以适当的方式实现此搜索?

谢谢。

最佳答案

Spring Data Rest 还集成了 QueryDSL 和 Web 支持,您可以将其用于您的高级搜索需求。您需要更改您的存储库以实现 QueryDslPredicateExecutor 并且一切都会开箱即用。

这是来自 blog 的示例关于该功能的文章:

$ http :8080/api/stores?address.city=York    
{
"_embedded": {
"stores": [
{
"_links": {

},
"address": {
"city": "New York",
"location": { "x": -73.938421, "y": 40.851 },
"street": "803 W 181st St",
"zip": "10033-4516"
},
"name": "Washington Hgts/181st St"
},
{
"_links": {

},
"address": {
"city": "New York",
"location": { "x": -73.939822, "y": 40.84135 },
"street": "4001 Broadway",
"zip": "10032-1508"
},
"name": "168th & Broadway"
},

]
},
"_links": {

},
"page": {
"number": 0,
"size": 20,
"totalElements": 209,
"totalPages": 11
}
}

关于java - 如何使用 Spring Data REST 进行高级搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36222830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com