溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JPA中findBy語(yǔ)法規(guī)則有哪些

發(fā)布時(shí)間:2021-11-20 14:36:09 來(lái)源:億速云 閱讀:1639 作者:小新 欄目:開(kāi)發(fā)技術(shù)

小編給大家分享一下JPA中findBy語(yǔ)法規(guī)則有哪些,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

JPA中所有findBy語(yǔ)法規(guī)則

1、findBy findAllBy的區(qū)別

它們之間沒(méi)有區(qū)別,它們將執(zhí)行完全相同的查詢(xún),當(dāng)從方法名稱(chēng)派生查詢(xún)時(shí),Spring Data會(huì)忽略All部分。唯一重要的一點(diǎn)是By關(guān)鍵字,其后面的任何內(nèi)容都被視為字段名稱(chēng)

如 findXXXXXXXXXXXXXByName 實(shí)際上==》 findByName

2、JPA中支持的關(guān)鍵詞

And:等價(jià)于 SQL 中的 and 關(guān)鍵字,比如 findByUsernameAndPassword(String user, Striang pwd);

Or:等價(jià)于 SQL 中的 or 關(guān)鍵字,比如 findByUsernameOrAddress(String user, String addr);

Between:等價(jià)于 SQL 中的 between 關(guān)鍵字,比如 findBySalaryBetween(int max, int min);

LessThan:等價(jià)于 SQL 中的 "<",比如 findBySalaryLessThan(int max);

GreaterThan:等價(jià)于 SQL 中的">",比如 findBySalaryGreaterThan(int min);

IsNull:等價(jià)于 SQL 中的 "is null",比如 findByUsernameIsNull();

IsNotNull:等價(jià)于 SQL 中的 "is not null",比如 findByUsernameIsNotNull();

NotNull:與 IsNotNull 等價(jià);

Like:等價(jià)于 SQL 中的 "like",比如 findByUsernameLike(String user);但是有一點(diǎn)需要注意的是,%需要我們自己來(lái)寫(xiě)

NotLike:等價(jià)于 SQL 中的 "not like",比如 findByUsernameNotLike(String user);

OrderBy:等價(jià)于 SQL 中的 "order by",比如 findByUsernameOrderBySalaryAsc(String user);

Not:等價(jià)于 SQL 中的 "! =",比如 findByUsernameNot(String user);

In:等價(jià)于 SQL 中的 "in",比如 findByUsernameIn(Collection<String> userList) ,方法的參數(shù)可以是 Collection 類(lèi)型,也可以是數(shù)組或者不定長(zhǎng)參數(shù);

NotIn:等價(jià)于 SQL 中的 "not in",比如 findByUsernameNotIn(Collection<String> userList) ,方法的參數(shù)可以是 Collection 類(lèi)型,也可以是數(shù)組或者不定長(zhǎng)參數(shù);

JPA findBy 語(yǔ)法總結(jié)

1、JPA同時(shí)查詢(xún)兩個(gè)屬性

其中一個(gè)是embedded class的屬性

findByIdageAndTime(int age, Date time)

2、表格匯總

JPA中findBy語(yǔ)法規(guī)則有哪些

JPA中findBy語(yǔ)法規(guī)則有哪些

3、Spring Data JPA框架在進(jìn)行方法名解析時(shí)

會(huì)先把方法名多余的前綴截取掉,比如 find、findBy、read、readBy、get、getBy,然后對(duì)剩下部分進(jìn)行解析。

4、JPA的NamedQueries

在實(shí)體類(lèi)上使用@NamedQuery,示例如下:

@NamedQuery(name = "UserModel.findByAge",query = "select o from UserModel o where o.age >= ?1")

在自己實(shí)現(xiàn)的DAO的Repository接口里面定義一個(gè)同名的方法,示例如下:

public List findByAge(int age);

然后就可以使用了,Spring會(huì)先找是否有同名的NamedQuery,如果有,那么就不會(huì)按照接口定義的方法來(lái)解析。

5、JPQL查詢(xún)

  @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);

以上是“JPA中findBy語(yǔ)法規(guī)則有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI