SpringDataJpa like查詢無效的解決

SpringDataJpa like查詢無效

這裡寫自定義目錄標題

SpringDataJpa like查詢

@Query(value = "select u from CheckTask u where u.site.id =:siteid and u.creattime like CONCAT('%',:strLike,'%') ")
List<CheckTask> findBySite_IdAndCreattimeLike(@Param("siteid")Long siteid,@Param("strLike") String strLike);

spring data jpa 不能是like

List<CheckPosition> findByPositionContainingAndSite_Id(String position,Long siteid);

Spring Data JPA 模糊查詢LIKE精簡版

一. 方法一

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);

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: