一、常用規則速查
1 and 並且
2 or 或
3 is,equals 等於
4 between 兩者之間
5 lessthan 小於
6 lessthanequal 小於等於
7 greaterthan 大於
8 greaterthanequal 大於等於
9 after 之後(時間) >
10 before 之前(時間) <
11 isnull 等於null
12 isnotnull,notnull 不等於null
13 like 模糊查詢。查詢件中需要自己加 %
14 notlike 不在模糊範圍內。查詢件中需要自己加 %
15 startingwith 以某開頭
16 endingwith 以某結束
17 containing 包含某
18 orderby 排序
19 not 不等於
20 in 某範圍內
21 notin 某範圍外
22 true 真
23 false 假
24 ignorecase 忽略大小寫
二、spring data 解析方法名--規則說明
1、規則描述
按照spring data 定義的規則,查詢方法以find|read|get開頭(比如 find、findby、read、readby、get、getby),涉及條件查詢時,條件的屬性用條件關鍵字連線,要注意的是:條件屬性首字母需大寫。框架在進行方法名解析時,會先把方法名多餘的字首擷取掉,然後對剩下部分進行解析。
如果方法的最後乙個引數是 sort 或者 pageable 型別,也會提取相關的資訊,以便按規則進行排序或者分頁查詢。
2、舉例說明
比如 findbyuseraddresszip()。框架在解析該方法時,首先剔除 findby,然後對剩下的屬性進行解析,詳細規則如下(此處假設該方法針對的域物件為 accountinfo 型別):
先判斷 useraddresszip (根據 pojo 規範,首字母變為小寫,下同)是否為 accountinfo 的乙個屬性,如果是,則表示根據該屬性進行查詢;如果沒有該屬性,繼續第二步;
從右往左擷取第乙個大寫字母開頭的字串(此處為 zip),然後檢查剩下的字串是否為 accountinfo 的乙個屬性,如果是,則表示根據該屬性進行查詢;如果沒有該屬性,則重複第二步,繼續從右往左擷取;最後假設 user 為 accountinfo 的乙個屬性;
接著處理剩下部分( addresszip ),先判斷 user 所對應的型別是否有 addresszip 屬性,如果有,則表示該方法最終是根據 "accountinfo.user.addresszip" 的取值進行查詢;否則繼續按照步驟 2 的規則從右往左擷取,最終表示根據 "accountinfo.user.address.zip" 的值進行查詢。
可能會存在一種特殊情況,比如 accountinfo 包含乙個 user 的屬性,也有乙個 useraddress 屬性,此時會存在混淆。讀者可以明確在屬性之間加上 "_" 以顯式表達意圖,比如 "findbyuser_addresszip()" 或者 "findbyuseraddress_zip()"。(強烈建議:無論是否存在混淆,都要在不同類層級之間加上"_" ,增加**可讀性)
三、一些情況
1、當查詢條件為null時。
舉例說明如下:
實體定義:對於乙個客戶實體cus,包含有name和***,均是string型別。
查詢方法定義:listfindbynameand***(string name,string ***);
使用時:dao.findbynameand***(null, "男");
後台生成sql片斷:where (cus0_.name is null) and cus0_.***=?
結論:當查詢時傳值是null時,資料庫中只有該字段是null的記錄才符合條件,並不是說忽略這個條件。也就是說,這種查詢方式,只適合於明確查詢條件必須傳的業務,對於動態查詢(條件多少是動態的,例如一般的查詢列表,由終端使用者使用時決定輸入那些查詢條件),這種簡單查詢是不能滿足要求的。
2、排序
? 1
2
3
listfindby***orderbyname(string ***);
//名稱正序(正序時,推薦此方式,簡單)
listfindby***orderbynameasc(string ***);
//名稱正序(效果同上)
listfindby***orderbynamedesc(string ***);
//名稱倒序
JPA方法名命名規則
1 and 並且 2 or 或 3 is,equals 等於 4 between 兩者之間 5 lessthan 小於 6 lessthanequal 小於等於 7 greaterthan 大於 8 greaterthanequal 大於等於 9 after 之後 時間 10 before 之前 時...
jpa命名規則
一 常用規則速查 1 and 並且 2 or 或 3 is,equals 等於 4 between 兩者之間 5 lessthan 小於 6 lessthanequal 小於等於 7 greaterthan 大於 8 greaterthanequal 大於等於 9 after 之後 時間 10 be...
c 獲取命名空間 類名 方法名
stacktrace ss new stacktrace true methodbase mb ss.getframe 1 getmethod 取得父方法命名空間 str mb.declaringtype.namespace n 取得父方法類名 str mb.declaringtype.name n...