SpringData 方法定義規範

2021-08-21 09:01:58 字數 1894 閱讀 3671

簡單條件查詢

• 簡單條件查詢:查詢

某乙個實體類或者集合 

• 按照

spring

data

的規範,

查詢方法

以find | read | get

開頭,涉及條件查詢時,條件的屬性用條件關鍵字連線,要注意的是:條件屬性以首字母大寫。

• 例如

:定義一

個entity

實體類 

classuser

{ private

string

firstname

; private

string

lastname

; } 

使用and

條件連線時,應這樣寫: 

findbylastnameandfirstname

(string

lastname,string

firstname

); 條件的屬性名稱與個數要與引數的位置與個數一一對應 

支援的關鍵字

直接在介面中定義查詢方法,如果是符合規範的,可以不用寫實現,目前支援的關鍵字寫法如下:

查詢方法解析流程

• 假如建立如下的查詢:

findby

userdepuuid

(),框架在解析該方法時,首先剔除

findby

,然後對剩下的屬性進行解析,假設查詢實體為

doc–

先判斷

userdepuuid

(根據pojo

規範,首字母變為小寫)是否為查詢實體的乙個屬性,如果是,則表示根據該屬性進行查詢;如果沒有該屬性,繼續第二步;– 從

右往左擷取第乙個大寫字母開頭的

字串(此處為

uuid),

然後檢查剩下的字串是否為查詢實體的乙個屬性,如果是,則表示根據該屬性進行查詢;如果沒有該屬性,則重複第二步,繼續從右往左擷取;最後

假設user

為查詢實體的乙個屬性;

– 接著

處理剩下部分(

depuuid

),先判斷

user

所對應的型別是否有

depuuid

屬性,如果有,則表示該方法最終是根據「

doc.user.depuuid

」的取值進行查詢;否則繼續按照步驟

2的規則從右往左擷取,最終表示根據「

doc.user.dep.uuid

」的值進行查詢。

– 可能

會存在一種特殊情況,比如

doc包含乙個

user

的屬性,也有乙個

userdep

屬性,此時會存在混淆。

可以明確在屬性之間加上

"_"

以顯式表達意圖

,比如

"findbyuser_depuuid

()"或者

"findbyuserdep_uuid

()"•

特殊的引數: 還可以直接在方法的引數上加入分頁或排序的引數,比如:

– page<

usermodel

>

findbyname

(stringname,

pageable

pageable);–

list<

usermodel

>

findbyname

(stringname, sort sort);

SpringData系列四 方法定義規範

1 簡單條件查詢 查詢某乙個實體類或者集合。按照 spring data 的規範,查詢方法以 find read get 開頭,涉及條件查詢時,條件的屬性用條件關鍵字連線,要注意的是 條件屬性以首字母大寫。例如 定義乙個實體類 user class user private string first...

goLang 方法定義

golang的方法定義 可以分為兩種 一種是 普通方法 func 方法名稱 引數列表 返回值列表 func echo info string 另一種是 根據型別 定義方法 func 別名 當然如果不想使用可以用 型別名稱 方法名稱 引數列表 返回值列表 根據型別定義。當然比較常見的還是 根據 構造體...

jpa方法定義

spring data jpa 介面詳解 一 介面方法整理速查 下表針對於簡單查詢,即jparepository介面 繼承了crudrepository介面 pagingandsortingrepository介面 中的可訪問方法進行整理。1 先按照功能進行分類整理,分為儲存 刪除 查詢單個 查詢多...