教你快速學會JPA中所有findBy語法規(guī)則
快速學會JPA中所有findBy語法規(guī)則
1、findBy findAllBy的區(qū)別
它們之間沒有區(qū)別,它們將執(zhí)行完全相同的查詢,當從方法名稱派生查詢時,Spring Data會忽略All部分。唯一重要的一點是By關鍵字,其后面的任何內容都被視為字段名稱
如 findXXXXXXXXXXXXXByName 實際上==》 findByName
2、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) ,方法的參數(shù)可以是 Collection 類型,也可以是數(shù)組或者不定長參數(shù);
NotIn:等價于 SQL 中的 "not in",比如 findByUsernameNotIn(Collection<String> userList) ,方法的參數(shù)可以是 Collection 類型,也可以是數(shù)組或者不定長參數(shù);
JPA findBy 語法總結
1、JPA同時查詢兩個屬性
其中一個是embedded class的屬性
findByIdageAndTime(int age, Date time)
2、表格匯總


3、Spring Data JPA框架在進行方法名解析時
會先把方法名多余的前綴截取掉,比如 find、findBy、read、readBy、get、getBy,然后對剩下部分進行解析。
4、JPA的NamedQueries
在實體類上使用@NamedQuery,示例如下:
@NamedQuery(name = "UserModel.findByAge",query = "select o from UserModel o where o.age >= ?1")
在自己實現(xiàn)的DAO的Repository接口里面定義一個同名的方法,示例如下:
public List findByAge(int age);
然后就可以使用了,Spring會先找是否有同名的NamedQuery,如果有,那么就不會按照接口定義的方法來解析。
5、JPQL查詢
@Query("from SysUser u where u.nickname=:nickname")
SysUser findUser(@Param("nickname") String nickname);
@Query("from SysUser u where u.nickname like %:nickname% order by u.fans desc")
List<SysUser> findUsers(@Param("nickname") String nickname);
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
SpringCloud:feign對象傳參和普通傳參及遇到的坑解決
這篇文章主要介紹了SpringCloud:feign對象傳參和普通傳參及遇到的坑解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
Java數(shù)據(jù)結構之二叉查找樹的實現(xiàn)
二叉查找樹(亦稱二叉搜索樹、二叉排序樹)是一棵二叉樹,且各結點關鍵詞互異,其中根序列按其關鍵詞遞增排列。本文將通過示例詳細講解二叉查找樹,感興趣的可以了解一下2022-03-03
Java操作redis實現(xiàn)增刪查改功能的方法示例
這篇文章主要介紹了Java操作redis實現(xiàn)增刪查改功能的方法,涉及java操作redis數(shù)據(jù)庫的連接、設置、增刪改查、釋放資源等相關操作技巧,需要的朋友可以參考下2017-08-08
SpringBoot集成Curator實現(xiàn)Zookeeper基本操作的代碼示例
Zookeeper是一個Apache開源的分布式的應用,為系統(tǒng)架構提供協(xié)調服務,ZooKeeper的目標就是封裝好復雜易出錯的關鍵服務,將簡單易用的接口和性能高效、功能穩(wěn)定的系統(tǒng)提供給用戶,本文給大家介紹了SpringBoot集成Curator實現(xiàn)Zookeeper基本操作,需要的朋友可以參考下2024-05-05
Java中StringBuffer和StringBuilder_動力節(jié)點Java學院整理
StringBuffer、StringBuilder和String一樣,也用來代表字符串。String類是不可變類,StringBuffer則是可變類,任何對它所指代的字符串的改變都不會產生新的對象。本文重點給大家介紹String、StringBuffer、StringBuilder區(qū)別,感興趣的朋友一起看看吧2017-04-04

