1. 程式人生 > >SpringData JPA 定義查詢方法

SpringData JPA 定義查詢方法

1.架構

在這裡插入圖片描述

2.查詢方法的建立

內部基礎架構中有個根據方法名的查詢生成器機制,對於在儲存庫的實體上構建約束查詢很有用。該機制方法的字首有find…By、 read…By、query…By、count…By和get…By,從這些方法可以分析它的其餘部分(實體裡面的欄位)。引入子句可以包含其他表示式,例如在Distinct要建立的查詢上設定不同的標誌。然而,第一個By作為分隔符來指示實際標準的開始。在一個非常基本的水平上,你可以定義實體性條件,並與它們串聯(And和Or)。
用一句話概括,待查詢功能的方法名由查詢策略(關鍵字)、查詢欄位和一些限制性條件組成。在如下例子中,可以直接在controller裡面進行呼叫以檢視效果:
在這裡插入圖片描述

在查詢時,通常需要同時根據多個屬性進行查詢,且查詢的條件也格式各樣(大於某個值、在某個範圍等等),Spring Data 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 型別,也可以是陣列或者不定長引數;

在這裡插入圖片描述