Spring Data JPA 如何進行模糊查詢
阿新 • • 發佈:2022-03-15
一. 方法一
1. Controller層:
方法引數如下,一定要加 "%"+name+"%"
-
@RestController
-
public class UserController {
-
-
@Autowired
-
private TeamRepository teamRepository;
-
-
@GetMapping("/findByNameLike")
-
public List<Team> findByNameLike(String name)
{
-
// 一定要加 "%"+引數名+"%"
-
return teamRepository.findByNameLike("%"+name+"%");
-
}
-
}
2. Dao層:
一定要使用 JPA 規定的形式 findBy+引數名+Like(引數)
-
-
public interface TeamRepository extends JpaRepository<Team, String> {
-
-
List<Team> findByNameLike
(String name);
-
-
}
二. 方法二
1. Controller:
引數簡單化
-
@RestController
-
public class UserController {
-
-
@Autowired
-
private TeamRepository teamRepository;
-
-
@GetMapping("/findByNameLike")
-
public List<Team> findByNameLike
(String name) {
-
return teamRepository.findByNameLike(name);
-
}
-
-
}
2.Dao層:
需要自己定義SQL語句
-
public interface TeamRepository extends JpaRepository<Team, String> {
-
-
@Query(value = "select t from Team t where t.name like %?1%")
-
List<Team> findByNameLike(String name);
-
}
三. 方法三
使用JpaRepository自帶的方法Containing,這個方法會在字串兩邊都加上%,和方法一的效果相同,這樣不過就是不用自己加%了
controller
-
@RestController
-
public class UserController {
-
-
@Autowired
-
private TeamRepository teamRepository;
-
-
@GetMapping("/findByNameLike")
-
public List<Team> findByNameLike(String name) {
-
return teamRepository.findByNameContaining(name);
-
}
-
-
}
Dao層
-
public interface TeamRepository extends JpaRepository<Team, String> {
-
-
List<Team> findByNameContaining(String name);
-
}
上面的方法一和方法三比較通用,但方法二比較靈活,JPA還有幾種模糊查詢,但範圍都沒有方法三的大,但用法一樣
參考引用於:https://blog.csdn.net/u011213044/article/details/104922483/****