ks_on_v Asked:2020-07-28 14:04:30 +0000 UTC2020-07-28 14:04:30 +0000 UTC 2020-07-28 14:04:30 +0000 UTC 在 Spring Data 中按表达式的一部分搜索 772 我在我的项目中使用 Spring Data。 数据库中有一个字段名称为 varchar 的表。有必要通过部分单词来实现自动完成搜索。例如,我输入前两个字母“Mi”,作为响应,我从数据库中得到 10 个值,其中这两个字母按此顺序出现。 如何实施? spring 2 个回答 Voted Best Answer Cepr0 2020-07-28T15:18:44Z2020-07-28T15:18:44Z 为此,SQL 使用LIKE运算符,该运算符使用百分比字符“%”(和下划线“_”)来指定搜索模式(掩码)。 在 Spring Data JPA 中,它匹配关键字 Like, NotLike, StartingWith, EndingWith, Containing。使用后三个最方便(因为前两个不使用掩码 - 您需要手动设置)。 因此,可以在存储库中创建这样的方法: public interface PersonRepo extends JpaRepository<Person, Long> { List<Person> findByNameStartingWith(String name); List<Person> findByNameEndingWith(String name); List<Person> findByNameContaining(String name); } 如果需要在搜索过程中忽略大小写,则必须在方法中添加关键字IgnoreCase: List<Person> findByNameContainingIgnoreCase(String name); 同样可以使用 SQL ( JPQL / HQL ) 独立完成: @Query("select p from Person p where upper(p.name) like concat('%', upper(?1), '%')") List<Person> findWithQuery(String name); Sergey Gornostaev 2020-07-28T15:08:59Z2020-07-28T15:08:59Z 在存储库中声明一个方法List<Person> findByNameLike(String name)并在搜索代码中调用它。
为此,SQL 使用LIKE运算符,该运算符使用百分比字符“%”(和下划线“_”)来指定搜索模式(掩码)。
在 Spring Data JPA 中,它匹配关键字
Like,NotLike,StartingWith,EndingWith,Containing。使用后三个最方便(因为前两个不使用掩码 - 您需要手动设置)。因此,可以在存储库中创建这样的方法:
如果需要在搜索过程中忽略大小写,则必须在方法中添加关键字
IgnoreCase:同样可以使用 SQL ( JPQL / HQL ) 独立完成:
在存储库中声明一个方法
List<Person> findByNameLike(String name)并在搜索代码中调用它。