Spring數據JPA中該接口QueryByExampleExecutor<T>
的方法的用例是什麼。我用google搜索了一下,發現的只不過是官方文檔。QueryByExampleExecutor方法的使用案例<T> Spring數據中的接口JPA
也許有人可以用實例指出我的正確資源。
特別是,該接口的findAll(Example<S> example, Pagable pageable)
更簡單的方法來搜索,分頁和排序?
Spring數據JPA中該接口QueryByExampleExecutor<T>
的方法的用例是什麼。我用google搜索了一下,發現的只不過是官方文檔。QueryByExampleExecutor方法的使用案例<T> Spring數據中的接口JPA
也許有人可以用實例指出我的正確資源。
特別是,該接口的findAll(Example<S> example, Pagable pageable)
更簡單的方法來搜索,分頁和排序?
從春天文檔爲Example
:
支持通過實例(QBE)查詢。一個示例使用探針來定義示例。匹配選項和類型安全可以使用ExampleMatcher進行調整。
所以這個類和QueryByExampleExecutor
接口包括Spring Data的實現這個實例查詢範式的一部分。
從維基百科職位上Query by Example:
查詢通過示例(QBE)是關係數據庫的數據庫查詢語言。它是在20世紀70年代中期由IBM Research的MoshéM. Zloof設計的,與SQL的開發並行。它是第一個圖形化查詢語言,使用可視表格,用戶可以輸入命令,示例元素和條件。
最後,您引用#findAll
方法的文檔指出以下:
<S extends T> Page<S> findAll(Example<S> example, Pageable pageable)
返回符合指定Example
實體的Page
。如果找不到匹配,則返回空的Page
。
因此,基本上QBE代表了一種使用更自然的,基於模板的查詢語法來查詢關係數據庫的方式,而不是使用SQL,而Spring Data有一個支持它的API。
Spring Data JPA查詢示例技術使用Example
s和ExampleMatcher
將實體實例轉換爲基礎查詢。 current official documentation有幾個有用的例子。
Person.java
public class Person {
@Id
private String id;
private String firstname;
private String lastname;
private Address address;
// … getters and setters omitted
}
PersonResource.java:
@RestController
@RequestMapping("/api")
public class PersonResource {
@GetMapping("/persons/{name}")
@Timed
public ResponseEntity<List<Person>> getPersons(@ApiParam Pageable pageable, @PathVariable String name) {
log.debug("REST request to get Person by : {}", name);
Person person = new Person();
person.setFirstname(name);
Page<Person> page = personRepository.findAll(Example.of(person), pageable);
HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(page, "/api/persons");
return new ResponseEntity<>(page.getContent(), headers, HttpStatus.OK);
}
所以可以肯定地說'在'的findAll example'參數(例這裏是我的例如通過文檔的啓發
示例,Pageable pageable' _can_提供某種_filtering_。我仍然沒有看到這個教程或示例,+1的維基百科鏈接雖然 – wiseOne@wiseOne Yep ,這是一種過濾方式。維基百科鏈接有一個數據庫示例,但是如果您單擊查詢示例的StackOverflow標籤,也有一些Spring示例。 – nbrooks