1. 程式人生 > 其它 >Spring Data JPA 如何進行模糊查詢

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/****