Spring数据JPA中QueryByExampleExecutor<T>接口的方法用例

ing*_*nia 5 java spring query-by-example spring-data spring-data-jpa

QueryByExampleExecutor<T>Spring数据JPA中这个接口的方法有哪些用例。我用谷歌搜索,发现的只是官方文档。

也许有人可以通过示例为我指出正确的资源。

特别是findAll(Example<S> example, Pagable pageable),该界面是否是一种更简单的搜索、分页和排序方式?

Vla*_*liy 7

Spring Data JPA 示例查询技术使用Examples 和ExampleMatchers 将实体实例转换为底层查询。当前的官方文档有几个有用的示例。这是我受文档启发的示例:

\n\n

人.java

\n\n
public class Person {\n\n  @Id\n  private String id;\n  private String firstname;\n  private String lastname;\n  private Address address;\n\n  // \xe2\x80\xa6 getters and setters omitted\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

PersonResource.java

\n\n
@RestController\n@RequestMapping("/api")\npublic class PersonResource {\n\n@GetMapping("/persons/{name}")\n@Timed\npublic ResponseEntity<List<Person>> getPersons(@ApiParam Pageable pageable, @PathVariable String  name) {\n    log.debug("REST request to get Person by : {}", name);\n    Person person = new Person();                         \n    person.setFirstname(name);  \n    Page<Person> page = personRepository.findAll(Example.of(person), pageable);\n    HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(page, "/api/persons");\n    return new ResponseEntity<>(page.getContent(), headers, HttpStatus.OK);\n}\n
Run Code Online (Sandbox Code Playgroud)\n


nbr*_*oks 4

来自 Spring 文档Example

\n\n
\n

支持示例查询 (QBE)。示例采用探针来定义示例。可以使用ExampleMatcher 调整匹配选项和类型安全性。

\n
\n\n

因此,此类和接口是 Spring Data 的示例查询QueryByExampleExecutor范例实现的一部分。

\n\n

来自维基百科关于示例查询的帖子:

\n\n
\n

Query by Example (QBE) 是一种用于关系数据库的数据库查询语言。它是由 IBM 研究中心的 Mosh\xc3\xa9 M. Zloof 在 20 世纪 70 年代中期设计的,与 SQL 的开发同时进行。它是第一种图形查询语言,使用可视表,用户可以在其中输入命令、示例元素和条件。

\n
\n\n

最后,您引用的方法的文档#findAll说明如下:

\n\n
\n

<S extends T> Page<S> findAll(Example<S> example, Pageable pageable)
\n 返回Page匹配给定的实体Example。如果找不到匹配项,Page则返回空。

\n
\n\n

因此,本质上 QBE 代表了一种使用更自然、基于模板的查询语法(而不是使用 SQL)来查询关系数据库的方法,并且 Spring Data 有一个支持这种方式的 API。

\n