中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Data JPA 簡單查詢

發布時間:2020-07-07 23:55:22 來源:網絡 閱讀:474 作者:鄒君安 欄目:網絡安全

一、接口方法整理速查

    下表針對于簡單查詢,即JpaRepository接口(繼承了CrudRepository接口、PagingAndSortingRepository接口)中的可訪問方法進行整理。(1)先按照功能進行分類整理,分為保存、刪除、查找單個、查找多個、其他5類。(2)再將不建議使用的方法置灰,此類方法多為CrudRepository接口、PagingAndSortingRepository接口中定義,后來JpaRepository接口中又定義了替代方法,更方便使用,比如:查找多個對象時,返回 List 比返回 Iterable 更容易處理。

Spring Data JPA 簡單查詢

 

二、五個接口詳解 

1、CrudRepository接口。

其中T是要操作的實體類,ID是實體類主鍵的類型。該接口提供了11個常用操作方法。

Spring Data JPA 簡單查詢

@NoRepositoryBean  
public interface CrudRepository<T, ID extends Serializable> extends Repository<T, ID> { 

    <S extends T> S save(S entity);//保存  
    <S extends T> Iterable<S> save(Iterable<S> entities);//批量保存  

    T findOne(ID id);//根據id 查詢一個對象。返回對象本身,當對象不存在時,返回null   
    Iterable<T> findAll();//查詢所有的對象  
    Iterable<T> findAll(Iterable<ID> ids);//根據id列表 查詢所有的對象  

    boolean exists(ID id);//根據id 判斷對象是否存在 
    long count();//計算對象的總個數  

    void delete(ID id);//根據id 刪除  
    void delete(T entity);//刪除一個對象 
    void delete(Iterable<? extends T> entities);//批量刪除,集合對象(后臺執行時,一條一條刪除)
    void deleteAll();//刪除所有 (后臺執行時,一條一條刪除)}

Spring Data JPA 簡單查詢

 

2、PagingAndSortingRepository接口。

該接口繼承了CrudRepository接口,提供了兩個方法,實現了分頁和排序的功能了。

Spring Data JPA 簡單查詢

@NoRepositoryBean    <T, ID  Serializable>  CrudRepository<T, ID> {  

    Iterable<T> findAll(Sort sort);
    Page<T> findAll(Pageable pageable);}

Spring Data JPA 簡單查詢

 

3、JpaRepository接口。

該接口繼承了PagingAndSortingRepository接口。

同時也繼承QueryByExampleExecutor接口,這是個用“實例”進行查詢的接口,后續再寫文章詳細說明。

Spring Data JPA 簡單查詢

@NoRepositoryBeanpublic interface JpaRepository<T, ID extends Serializable>        extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> {
    
    List<T> findAll(); //查詢所有對象,返回List
    List<T> findAll(Sort sort); //查詢所有對象,并排序,返回List
    List<T> findAll(Iterable<ID> ids); //根據id列表 查詢所有的對象,返回List

    void flush(); //強制緩存與數據庫同步 

    <S extends T> List<S> save(Iterable<S> entities); //批量保存,并返回對象List
    <S extends T> S saveAndFlush(S entity); //保存并強制同步數據庫

    void deleteInBatch(Iterable<T> entities); //批量刪除 集合對象(后臺執行時,生成一條語句執行,用多個or條件)
    void deleteAllInBatch();//刪除所有 (執行一條語句,如:delete from user)

    T getOne(ID id); //根據id 查詢一個對象,返回對象的引用(區別于findOne)。當對象不存時,返回引用不是null,但各個屬性值是null
    
    @Override
    <S extends T> List<S> findAll(Example<S> example); //根據實例查詢
    @Override
    <S extends T> List<S> findAll(Example<S> example, Sort sort);//根據實例查詢,并排序。}

Spring Data JPA 簡單查詢

 幾點說明:

(1)幾個查詢、及批量保存方法,和 CrudRepository 接口相比,返回的是 List,使用起來更方便。

(2)增加了 InBatch 刪除, 實際執行時,后臺生成一條sql語句,效率更高些。相比較而言,CrudRepository 接口的刪除方法,都是一條一條刪除的,即便是 deleteAll 也是一條一條刪除的。

(3)增加了 getOne() 方法,切記,該方法返回的是對象引用,當查詢的對象不存在時,它的值不是Null

 

4、JpaSpecificationExecutor接口
該接口提供了對JPA Criteria查詢(動態查詢)的支持。這個接口很有用,具體不粘源碼了。


 

5、Repository接口
這個接口是最基礎的接口,只是一個標志性的接口,沒有定義任何的方法,那這個接口有什么用了?既然Spring data JPA提供了這個接口,自然是有它的用處,例如,我們有一部分方法是不想對外提供的,比如我們只想提供增加和修改方法,不提供刪除方法,那么前面的幾個接口都是做不到的,這個時候,我們就可以繼承這個接口,然后將CrudRepository接口里面相應的方法拷貝到Repository接口就可以了。

 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜兰县| 图片| 疏勒县| 孝感市| 贞丰县| 石渠县| 台南市| 井研县| 罗江县| 临邑县| 晋中市| 石河子市| 宣恩县| 新乐市| 澄江县| 界首市| 商洛市| 威海市| 铜梁县| 土默特右旗| 凭祥市| 疏附县| 九台市| 同仁县| 宁强县| 桦南县| 深圳市| 正宁县| 漾濞| 临潭县| 广河县| 墨脱县| 天等县| 新宁县| 安阳市| 安义县| 五大连池市| 新昌县| 玉屏| 浦县| 华安县|