繼official documentation高級比較,增加@EnableSpringDataWebSupport
註解到我的Spring配置允許查詢自動注入Predicate
類:春天 - 對QueryDsl支持
@RequestMapping(method = RequestMethod.GET, path="/find")
public ResponseEntity<PagedResources<FooResource>> find(Pageable pageable, PagedResourcesAssembler<Foo> assembler, @QuerydslPredicate(root = Foo.class) Predicate predicate) {
Page<Foo> foos = fooRepository.findAll(predicate, pageable)
final ResourceAssemblerSupport<Foo, FooResource> fooResourceAssembler = new ....;
final PagedResources<FooResource> pagedResources = assembler.toResource(foos, fooResourceAssembler);
return new ResponseEntity<>(pagedResources, HttpStatus.OK);
}
然後我就可以執行GET請求時輕鬆地搜索:
GET /foo/name?=bob&name=alice&age=20
這工作正常。但是我不知道如何來實現更高級的搜索條件:
>
<
>=
<=
通常我想這些運算符適用於數字和日期字段在我的數據模型中。 Querydsl支持這些標準。
我嘗試添加我的查詢參數> (%3E)
但它無法解析(例如用於數字字段,如年齡它會抱怨不能分析>10
爲數字。
是否有可能直接在查詢中使用該運營商?
(如果它的事項,我使用Spring數據的MongoDB)
你有沒有找到一種方法來實現這一點?我一直在試圖實現類似的東西,但沒有成功。 – woemler
@woemler我實際上已經停止了這個問題,但它不會消失。我想我最終會寫我自己的代碼來解析de查詢參數。我需要檢查是否有一種簡單的方法將其與彈簧注射機構整合。當我這樣做時,我可能會在spring github版本庫中尋求建議。如果我找到一些有趣的東西,將它寫在這裏作爲答案 – phoenix7360