SpringData JPA 定義查詢方法
阿新 • • 發佈:2019-01-09
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 型別,也可以是陣列或者不定長引數;