欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring?Data?JPA命名約定查詢實現方法

 更新時間:2023年12月10日 08:56:43   作者:zz  
這篇文章主要為大家介紹了Spring?Data?JPA命名約定查詢實現方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

很笨的實現

假設我只要需要最后三條數據,如下是我的實現方法,這是一個很笨的實現,因為這個操作是真的很冗余,這個是請求到了全部,在進行降序排序,然后在截取前面三條數據。

// 創(chuàng)建一個 Sort 對象,表示按照 ID 降序排列
        Sort sort = Sort.by(Sort.Direction.DESC, "id");
        List<Rank> allRanks = this.rankRepository.findAll(sort);
        int size = allRanks.size();
        if (size > 3) {
            allRanks = allRanks.subList(0, 3);
        }

Sort.Direction.DESC 按降序排序,desc 是descend的縮寫
Sort.Direction.ASC 按升序排序,asc 是ascend的縮寫

JpaRepository

根據上面操作,起碼寫了六行代碼,我只需要使用命名約定查詢findTop3ByOrderByIdDesc()這個方法jpa會根據這個方法名稱返回前面三條數據。

在前面已經繼承JpaRepository接口。JpaRepository接口又繼承了四個接口PagingAndSortingRepository、CrudRepository、Repository、QueryByExampleExecutor,看到接口繼承關系圖如下:

從上圖中我們可以看到兩種線,虛線和帶箭頭的實線。

  • 實線帶箭頭: 通常表示繼承關系。在繼承關系中,子類繼承了父類的屬性和方法。實線箭頭的方向指向父類,表示子類是從父類繼承而來。
  • 虛線: 通常表示關聯或依賴關系。在關聯關系中,一個類與另一個類有某種關聯,但不一定是繼承關系。虛線箭頭的方向通常表示關聯的方向,即其中一個類依賴于另一個類。

繼承四個接口的作用

  • Repository接口:提供了基本的 CRUD 操作,是倉庫接口層次結構的最頂層。
  • CrudRepository接口:CrudRepository 是繼承自 Repository 接口的子接口,提供了基本的 CRUD 方法,包括保存、查詢、更新和刪除。
  • PagingAndSortingRepository接口:PagingAndSortingRepository 是繼承自 CrudRepository 接口的子接口。
  • QueryByExampleExecutor 接口:支持基于實例的動態(tài)查詢的方法、允許你通過傳遞一個示例對象來執(zhí)行查詢,而不需要手動編寫查詢語句。

如何使用命名約定查詢

Spring Data JPA提供的方法命名規(guī)則定義方法的名稱,就可以完成查詢工作。程序執(zhí)行的時候會根據方法名稱進行解析,并自動生成sql語句進行查詢。

規(guī)則如下:

1.findBy  + 屬性名稱 (根據屬性名稱進行完成匹配的查詢=)findByName

2.findBy  + 屬性名稱 + “查詢方式(Like | isnull)” findByNameLike

3.多條件查詢
 findBy + 屬性名 + “查詢方式”   + “多條件的連接符(and|or)”  + 屬性名 + “查詢方式” 既 findByWeekReportIdAndVoteUserId

Sample

public class Vote extends BaseEntity<Long> {
    @ManyToOne
    private User voteUser;
    @ManyToMany
    private List<VoteDetail> voteDetails;
    @ManyToOne
    private WeekReport weekReport;
}

實現查詢:

List<Vote> votesFind = voteRepository.findAll();
 List<Vote> votes = voteRepository.findByWeekReportIdAndVoteUserId(1L, 1L);

這樣就實現多條件查詢了,我想如果我不知道這個命名約定查詢之前肯定會,先全部請求到數據,然后一個個for if去對比數據,最后才拿到我想要的數據。

總結

使用命名約定查詢,減少錯誤的發(fā)生,提高開發(fā)效率,簡化查詢語句的編寫;這樣也使得代碼更具有易讀性,而且只需要定義方法的命名即可。

參考

官網地址:https://springdoc.cn/spring-data-jpa/#repositories.namespace-...

以上就是Spring Data JPA命名約定查詢實現方法的詳細內容,更多關于Spring Data JPA命名約定查詢的資料請關注腳本之家其它相關文章!

相關文章

  • Java之 TreeSet的詳細使用說明

    Java之 TreeSet的詳細使用說明

    這篇文章主要介紹了Java之 TreeSet的詳細使用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Spring cloud oauth2如何搭建認證資源中心

    Spring cloud oauth2如何搭建認證資源中心

    這篇文章主要介紹了Spring cloud oauth2如何搭建認證資源中心,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • spring-data-redis 2.0 的使用示例代碼

    spring-data-redis 2.0 的使用示例代碼

    這篇文章主要介紹了spring-data-redis 2.0 的使用示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-01-01
  • Java中的this、super、final關鍵字詳解

    Java中的this、super、final關鍵字詳解

    這篇文章主要介紹了Java中的this、super、final關鍵字詳解,它在方法內部使用,表示這個方法所屬對象的引用,它在構造器內部使用,表示該構造器正在初始化的對象,this 可以調用類的屬性、方法和構造器,需要的朋友可以參考下
    2023-09-09
  • Java使用反射獲取list泛型過程淺析

    Java使用反射獲取list泛型過程淺析

    這篇文章主要介紹了Java使用反射獲取list泛型過程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-02-02
  • Java實現文件壓縮為zip和解壓zip壓縮包

    Java實現文件壓縮為zip和解壓zip壓縮包

    這篇文章主要為大家介紹了Java如何實現將文件壓縮為zip以及解壓zip壓縮包,文中的示例代碼講解詳細,感興趣的小伙伴可以動手嘗試一下
    2022-06-06
  • AndroidQ沙盒機制之分區(qū)存儲適配

    AndroidQ沙盒機制之分區(qū)存儲適配

    這篇文章主要介紹了AndroidQ沙盒機制之分區(qū)存儲適配,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • SpringBoot + Spring Cloud Consul 服務注冊和發(fā)現詳細解析

    SpringBoot + Spring Cloud Consul 服務注冊和發(fā)現詳細解析

    這篇文章主要介紹了SpringBoot + Spring Cloud Consul 服務注冊和發(fā)現,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Java調用MySQL存儲過程并獲得返回值的方法

    Java調用MySQL存儲過程并獲得返回值的方法

    這篇文章主要介紹了Java調用MySQL存儲過程并獲得返回值的方法,實例分析了java實現MySQL存儲過程的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • MyBatis-Plus如何通過注解使用TypeHandler

    MyBatis-Plus如何通過注解使用TypeHandler

    這篇文章主要介紹了MyBatis-Plus如何通過注解使用TypeHandler,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評論