一、常用規則速查
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、排序?
listfindby***orderbyname(string ***);
//名稱正序(正序時,推薦此方式,簡單)
listfindby***orderbynameasc(string ***);
//名稱正序(效果同上)
listfindby***orderbynamedesc(string ***);
//名稱倒序
SpringBoot JPA常用註解
就像 table註解用來標識實體類與資料表的對應關係類似,column註解來標識實體類中屬性與資料表中字段的對應關係。column name broker id columndefinition bigint 11 nullable false private long brokerid id co...
Spring Boot JPA訪問Mysql示例
上篇演示了通過m en構建spring boot 專案,引用web模組啟動應用,完成簡單的web 應用訪問,本章內容在此基礎上面加入資料訪問與埠修改,下文 與演例 本用例純手工測試通過,放心入坑 修改預設埠 在src main resources下加入application.properties內容...
spring boot jpa 事務管理
spring boot 對jpa的支援極為方便,基本上不需要作太多配置,只需要加上註解就能支援事務 controller transactional rollbackon exception.class public class testcontroller transactional rollba...