Spring Data JPA 如何进行模糊查询

一. 方法一

1.  Controller层:

  方法参数如下,一定要加 "%"+name+"%"

  1. @RestController
  2. public class UserController {
  3. @Autowired
  4. private TeamRepository teamRepository;
  5. @GetMapping("/findByNameLike")
  6. public List<Team> findByNameLike(String name) {
  7. // 一定要加 "%"+参数名+"%"
  8. return teamRepository.findByNameLike("%"+name+"%");
  9. }
  10. }

2. Dao层:
 一定要使用 JPA 规定的形式 findBy+参数名+Like(参数)
  

  1. public interface TeamRepository extends JpaRepository<Team, String> {
  2. List<Team> findByNameLike(String name);
  3. }

 
二. 方法二

 1. Controller:

 参数简单化

  1. @RestController
  2. public class UserController {
  3. @Autowired
  4. private TeamRepository teamRepository;
  5. @GetMapping("/findByNameLike")
  6. public List<Team> findByNameLike(String name) {
  7. return teamRepository.findByNameLike(name);
  8. }
  9. }


2.Dao层:

需要自己定义SQL语句

  1. public interface TeamRepository extends JpaRepository<Team, String> {
  2. @Query(value = "select t from Team t where t.name like %?1%")
  3. List<Team> findByNameLike(String name);
  4. }

三. 方法三

使用JpaRepository自带的方法Containing,这个方法会在字符串两边都加上%,和方法一的效果相同,这样不过就是不用自己加%了

controller

  1. @RestController
  2. public class UserController {
  3. @Autowired
  4. private TeamRepository teamRepository;
  5. @GetMapping("/findByNameLike")
  6. public List<Team> findByNameLike(String name) {
  7. return teamRepository.findByNameContaining(name);
  8. }
  9. }

Dao层

  1. public interface TeamRepository extends JpaRepository<Team, String> {
  2. List<Team> findByNameContaining(String name);
  3. }

上面的方法一和方法三比较通用,但方法二比较灵活,JPA还有几种模糊查询,但范围都没有方法三的大,但用法一样

参考引用于:https://blog.csdn.net/u011213044/article/details/104922483/****
posted @ 2022-03-15 11:42  Irving88  阅读(911)  评论(0)    收藏  举报