SpringData--Repository接口及其子接口的應用-4

一 瞭解Repository接口

Repository是Spring Data的核心接口,是類似於Serializable的標誌接口.

可以通過兩種方式提供實現:

1-繼承

2-註解

測試:

 

3-Repository的查詢方法定義規則

 

 

 

 

 

弊端:

a-方法名比較長

b-對於複雜查詢,依然難以實現

解決方案:@Query註解的應用

 

4- @Query註解

在Repository接口中使用,不需要遵循查詢方法命名規則,使用非常靈活,常用.

案例1:查詢最大id的user信息

 

案例2:根據參數條件查詢用戶信息

寫法1:

 

寫法2:

 

案例3:like的應用

 

案例4:原生SQL的使用

 

 

5- 增刪改操作(必須結合事務)

Dao層: @Modifying+@Query

Service層: @Transactional 注,根據項目需求及規範,只能在Service層添加事務,Dao層不建議使用

在Dao層使用@Modifying+@Query

在Service層使用@Transactional

測試Service

 

 

二 Repository的子接口

設置好快捷鍵後

可以看到Repository的子接口和子類.

 

*********************SpringData的高級應用**************************

 

三 CurdRepository接口

 

案例:向表中保存數據或保存數據集合

a-更爲ORM映射的表名稱(新建表)

 

b-實現Dao層CRUD功能,通過繼承CrudRepository

 

 

發現CrudRepository接口中的方法大部分都是DML操作,因此,需要放到Service中加入事務註解@Transactional才能進行測試.

c-編寫Service,進行測試

 

 

四 PagingAndSortingRepository接口(實現分頁和排序)

 

實際擁有的方法如下:

案例:實現排序及分頁功能

編寫測試類:

測試功能1:排序

測試功能2:分頁

測試功能3:排序後進行分頁

 

五 JpaRepository接口

接口方法定義:

@NoRepositoryBean public interface JpaRepository<T, ID extends Serializable> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> { List<T> findAll(); List<T> findAll(Sort var1); List<T> findAll(Iterable<ID> var1); <S extends T> List<S> save(Iterable<S> var1); void flush(); <S extends T> S saveAndFlush(S var1); void deleteInBatch(Iterable<T> var1); void deleteAllInBatch(); T getOne(ID var1); <S extends T> List<S> findAll(Example<S> var1); <S extends T> List<S> findAll(Example<S> var1, Sort var2); }

所有方法如下:

案例:測試getOne

 

 

六 JpaSpecificationExecutor接口

Specification封裝了JPA Criteria查詢條件

案例:能夠執行[分頁]+[排序]+[追加查詢條件]

 

 

 

案例源代碼:

SpringDataDemo

3.rar

27.52KB

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章