JPA如何使用findBy方法自定義查詢

JPA使用findBy方法自定義查詢

最近在項目中使用spring boot+jpa的方式來訪問數據庫,例如:本項目中的課程目錄詳情表中包括瞭外鍵課程詳情ID,想通過課程詳情ID查找出所有關聯的課程目錄詳情

在JPA中使用findBy方法自定義查詢

在這裡插入圖片描述

在postman測試請求的接口如下

在這裡插入圖片描述

這樣就很方便的查詢所需要的數據,不用再寫接口去過濾瞭。

JPA的findBy語法整理

前提操作

  • 創建一個可持久化的實體類
  • dao層繼承JpaRepository<T,ID>

T:實體類

ID:實體類的主鍵類型

例:

public interface SysUserRespository extends JpaRepository<SysUser,Long> {}

JPA中支持的關鍵詞

  • And:等價於 SQL 中的 and 關鍵字,比如 findByUsernameAndPassword(String user, Striang pwd);
  • Or:等價於 SQL 中的 or 關鍵字,比如 findByUsernameOrAddress(String user, String addr);
  • Between:等價於 SQL 中的 between 關鍵字,比如 findBySalaryBetween(int max, int min);
  • LessThan:等價於 SQL 中的 “<“,比如 findBySalaryLessThan(int max);
  • GreaterThan:等價於 SQL 中的”>”,比如 findBySalaryGreaterThan(int min);
  • IsNull:等價於 SQL 中的 “is null”,比如 findByUsernameIsNull();
  • IsNotNull:等價於 SQL 中的 “is not null”,比如 findByUsernameIsNotNull();
  • NotNull:與 IsNotNull 等價;
  • Like:等價於 SQL 中的 “like”,比如 findByUsernameLike(String user);
  • NotLike:等價於 SQL 中的 “not like”,比如 findByUsernameNotLike(String user);
  • OrderBy:等價於 SQL 中的 “order by”,比如 findByUsernameOrderBySalaryAsc(String user);
  • Not:等價於 SQL 中的 “! =”,比如 findByUsernameNot(String user);
  • In:等價於 SQL 中的 “in”,比如 findByUsernameIn(Collection<String> userList) ,方法的參數可以是 Collection 類型,也可以是數組或者不定長參數;
  • NotIn:等價於 SQL 中的 “not in”,比如 findByUsernameNotIn(Collection<String> userList) ,方法的參數可以是 Collection 類型,也可以是數組或者不定長參數;

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

推薦閱讀: