4

我正在尝试编写一个 Micronaut Data JPA finder 来查找employees与字符串列表匹配的所有内容。

给定以下员工(名字,姓氏)

  • 约翰·多伊
  • 简·多伊
  • 彼得潘
  • 西尔维奥·旺勒
  • 弗兰卡·波坦特
  • 弗兰克·波特

假设用户使用Silvio之类的查询查询系统,那么结果应该是

  • 员工:西尔维奥·旺勒

如果查询是Frank,则结果应该是

  • 员工:弗兰卡·波坦特
  • 员工:弗兰克·波特

如果查询是坦率的锅,结果也应该(不区分大小写)

  • 员工:弗兰卡·波坦特
  • 员工:弗兰克·波特

我设法为单个字符串编写了一个查找器,如下所示

Page<Employee> findAllByLastNameIlikeOrFirstNameIlike(
      String lastName, String firstName, Pageable pageable);

对于像 frank pot这样的查询,我想将字符串标记/拆分为列表 ["frank", "pot"] 并且想知道我是否可以实现类似的东西

Page<Employee> findAllByLastNameIlikeOrFirstNameIlike(
      List<String> lastName, List<String> firstName, Pageable pageable);

甚至更好地使用 JPA 的 Criteria API。您将如何实现这样的搜索器?你能给我指个方向吗?

4

1 回答 1

2

我总是想到的第一件事是如何用普通的 SQL 来做。发现一个MySQL Like 多个值

所以我建议最好的方法是使用标准 API 并构建您自己的动态查询。查看第一个示例https://micronaut-projects.github.io/micronaut-data/latest/guide/#repositories,它为您提供了 micronaut 所需的一切。

如果我有某种动态查询,例如“给我从头到尾的所有内容,但如果未指定开始,则在结束之前给我所有内容......”,我也会使用 ciriteria api

于 2020-06-11T19:52:44.803 回答