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。
推薦閱讀:
- 教你快速學會JPA中所有findBy語法規則
- 基於JPA的Repository使用詳解
- SpringBoot使用JPA實現查詢部分字段
- Spring Boot JPA Repository之existsBy查詢方法失效的解決
- 繼承jpa Repository 寫自定義方法查詢實例