一、SpringData簡介
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/
??Spring Data是一個用于簡化數(shù)據(jù)庫訪問,并支持云服務的開源框架。其主要目標是使得對數(shù)據(jù)的訪問變得方便快捷。
??可以極大的簡化JPA的寫法,可以在幾乎不用寫實現(xiàn)的情況下,實現(xiàn)對數(shù)據(jù)的訪問和操作。除了CRUD外,還包括如分頁、排序等一些常用的功能。
主要來看看Spring Data JPA提供的接口,也是Spring Data JPA的核心概念:
1:Repository:最頂層的接口,是一個空的接口,目的是為了統(tǒng)一所有Repository的類型,且能讓組件掃描的時候自動識別。
2:CrudRepository :是Repository的子接口,提供CRUD的功能
3:PagingAndSortingRepository:是CrudRepository的子接口,添加分頁和排序的功能
4:JpaRepository:是PagingAndSortingRepository的子接口,增加了一些實用的功能,比如:批量操作等。
5:JpaSpecificationExecutor:用來做負責查詢的接口
6:Specification:是Spring Data JPA提供的一個查詢規(guī)范,要做復雜的查詢,只需圍繞這個規(guī)范來設置查詢條件即可
特征
1:強大的存儲庫和自定義對象映射抽象
2:從存儲庫方法名稱中進行動態(tài)查詢導出
3:實現(xiàn)域基類提供基本屬性
4:支持透明審核(創(chuàng)建,最后更改)
5:集成自定義存儲庫代碼的可能性
6:Easy Spring通過JavaConfig和自定義XML命名空間進行集成
7:與Spring MVC控制器進行高級集成
8:跨店存儲的實驗支持
二、Maven依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
三、繼承接口
Repository
public interface GatewayRouteRepository extends JpaRepository<GatewayRoute, String> , JpaSpecificationExecutor<GatewayRoute> {
}
四、Spring Data Repository 查詢方法定義規(guī)范
簡單查詢條件 :查詢某一個實體類或是集合
在Repository 子接口中聲明方法:
①、不是隨便聲明的,而需要符合一定的規(guī)范
②、查詢方法以 find | read | get 開頭
③、涉及條件查詢時,條件的屬性用條件關鍵字連接
④、要注意的是:條件屬性以首字母大寫
⑤、支持屬性的級聯(lián)查詢。若當前類有符合條件的屬性,則優(yōu)先使用,而不使用級聯(lián)屬性。若需要使用級聯(lián)屬性,則屬性之間使用_連接
spring data支持的關鍵字
| 關鍵字 | 方法命名 | sql where字句 |
|---|---|---|
| And | findByNameAndPwd | where name= ? and pwd =? |
| Or | findByNameOrSex | where name= ? or sex=? |
| Is,Equals | findById,findByIdEquals | where id= ? |
| Between | findByIdBetween | where id between ? and ? |
| LessThan | findByIdLessThan | where id < ? |
| LessThanEquals | findByIdLessThanEquals | where id <= ? |
| GreaterThan | findByIdGreaterThan | where id > ? |
| GreaterThanEquals | findByIdGreaterThanEquals | where id > = ? |
| After | findByIdAfter | where id > ? |
| Before | findByIdBefore | where id < ? |
| IsNull | findByNameIsNull | where name is null |
| isNotNull,NotNull | findByNameNotNull | where name is not null |
| Like | findByNameLike | where name like ? |
| NotLike | findByNameNotLike | where name not like ? |
| StartingWith | findByNameStartingWith | where name like '?%' |
| EndingWith | findByNameEndingWith | where name like '%?' |
| Containing | findByNameContaining | where name like '%?%' |
| OrderBy | findByIdOrderByXDesc | where id=? order by x desc |
| Not | findByNameNot | where name <> ? |
| In | findByIdIn(Collection<?> c) | where id in (?) |
| NotIn | findByIdNotIn(Collection<?> c) | where id not in (?) |
| True | findByAaaTue | where aaa = true |
| False | findByAaaFalse | where aaa = false |
| IgnoreCase | findByNameIgnoreCase | where UPPER(name)=UPPER(?) |