Spring Data JPA入門

1、Spring Data JPA是什么?

它是Spring基于ORM框架、JPA規(guī)范封裝的一套JPA應(yīng)用框架,可使開發(fā)者用極簡(jiǎn)的代碼即可實(shí)現(xiàn)對(duì)數(shù)據(jù)的訪問(wèn)和操作。它提供了包括增刪改查等在內(nèi)的常用功能,且易于擴(kuò)展。學(xué)習(xí)并使用Spring Data JPA可以極大的提高開發(fā)效率

2、Spring Data JPA有什么?

主要看看Spring Data JPA提供的編程接口。

  • Repository:最頂層的接口, 是一個(gè)空接口,目的是為了統(tǒng)一所有的Repository的類型,且能讓組件掃描的時(shí)候自動(dòng)識(shí)別。
  • CrudRepository:Repository的子接口, 提供CRUD的功能。
  • PagingAndSortingRepository:CrudRepository的子接口,添加分頁(yè)排序的功能。
  • JpaRepository:PagingAndSortingRepository的子接口,增加批量操作等功能。
  • JpaSpecificationExecutor:用來(lái)做復(fù)雜查詢的解耦庫(kù)。
接口繼承關(guān)系圖:
接口繼承關(guān)系圖

3、添加、修改、刪除操作

Spring Data JPA提供的JpaRepository接口包含了以下幾個(gè)常用的方法:

  • delete 刪除或者批量刪除。
  • findAll 查找所有。
  • findOne 查找單個(gè)。
  • sava 保存單個(gè)或批量保存。
  • saveAndFlush 保存并刷新到數(shù)據(jù)庫(kù)。

4、查詢操作的基本實(shí)現(xiàn)

  • 基于方法名解析的概念
    JpaRepository支持接口規(guī)范方法名查詢。意思是如果在接口中定義的查詢方法符合它的命名規(guī)則,就可以不用寫實(shí)現(xiàn)。
    例如:findByName這個(gè)方法表示從數(shù)據(jù)庫(kù)中查詢Name這個(gè)屬性等于xxx的所有記錄,類似于SQL語(yǔ)句:select * from xxTable where name=xxx這種形式。
    這里有兩個(gè)重點(diǎn):
    1、方法名需要在接口中定義。
    2、必須符合一定的命名規(guī)范。

  • 方法名構(gòu)造規(guī)范
    構(gòu)造法:find+全局修飾+By+實(shí)體的屬性名稱+限定詞+連接詞+(其它實(shí)體屬性)+OrderBy+排序?qū)傩?排序方向
    例如:findDistinctFirstNameIgnoreCaseAndLastNameOrderByAgeDesc(String firstName, String lastName){...}
    其中:Distinct是全局修飾(非必須),F(xiàn)irstName和LastName是實(shí)體的屬性名,And是連接詞,IgnoreCase是限定詞,Age是排序?qū)傩裕珼esc是排序方向,限定詞和連接詞統(tǒng)稱為“關(guān)鍵詞”。

  • 目前支持的關(guān)鍵詞
    常用詞如下:
    全局修飾:Distinct、Top、First。
    關(guān)鍵詞:IsNull、IsNotNull、Like、NotLike、Containing、In、NotIn、IgnoreCase、Between、Equals、LessThan、GreaterThan、After、Before...
    排序方向:Asc、Desc。
    連接詞:And、Or。
    更多關(guān)鍵詞請(qǐng)查看官方在線文檔:Spring Data JPA參考文檔

  • 嵌套實(shí)體方法命名規(guī)則
    構(gòu)造法:主實(shí)體中子實(shí)體的名稱+_+子實(shí)體的屬性名稱
    例如:List<Person> findByAddress_ZipCode(ZipCode zipCode)
    它表示查詢所有Address(地址)的zipCode(郵編)為指定值的所有Person(人員)列表。

【下一篇】:Spring Data JPA 實(shí)體詳解

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容