春季JPA@Query与喜欢

2022-08-31 09:26:30

我正在尝试在CrudRepository中创建一个方法,该方法将能够为我提供用户列表,其用户名类似于输入参数(不仅以开头,而且还包含它)。我试图使用方法,但正如Spring文档中所说,此方法等于“”。这对我来说不好,因为我已经告诉过,我正在尝试获取用户名包含..."findUserByUsernameLike(@Param("username") String username)"where user.username like ?1

我写了一个查询到该方法,但它甚至没有部署。

@Repository
public interface UserRepository extends CrudRepository<User, Long> {

@Query("select u from user u where u.username like '%username%'")
List<User> findUserByUsernameLike(@Param("username") String username);
}

任何人都可以帮我吗?


答案 1

尝试使用以下方法(它适用于我):

@Query("SELECT u.username FROM User u WHERE u.username LIKE CONCAT('%',:username,'%')")
List<String> findUsersWithPartOfName(@Param("username") String username);

注意:JPQL 中的表名必须以大写字母开头。


答案 2

使用从方法名称创建查询,检查表 4,其中说明了一些关键字。

  1. 使用“赞”:select ... like :username

     List<User> findByUsernameLike(String username);
    
  2. 启动使用:select ... like :username%

     List<User> findByUsernameStartingWith(String username);
    
  3. 结尾为:select ... like %:username

     List<User> findByUsernameEndingWith(String username);
    
  4. 含:select ... like %:username%

     List<User> findByUsernameContaining(String username);
    

请注意,您正在寻找的答案是数字4。您不必使用@Query


推荐