2020-03-20 Spring Data JPA 系列教程-1、2 引入依賴及核心接口

1 依賴 dependency

<dependencies>
  <dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
  </dependency>
<dependencies>

2 核心概念 Repository

核心接口是repository。它以類(映射表)和類的ID(主鍵)類型作為類型參數(shù)來管理。此接口主要用作標記接口,可通過繼承此接口完成其他功能。CrudRepository為正在管理的實體類提供了復雜的CRUD功能。

2.1 CrudRepository

public interface CrudRepository<T, ID> extends Repository<T, ID> {

  <S extends T> S save(S entity);      

  Optional<T> findById(ID primaryKey); 

  Iterable<T> findAll();               

  long count();                        

  void delete(T entity);               

  boolean existsById(ID primaryKey);   

  // … more functionality omitted.
}

對應如下:
保存給定的實體。
返回由給定ID標識的實體。
返回所有實體。
返回實體的數(shù)量。
刪除給定的實體。
指示是否存在具有給定ID的實體。

Spring Data JPA還提供了特定的持久層抽象類,如JpaRepository或MongoRepository。這些接口擴展了CrudRepository并提供了了持久層的功能和其他通用接口。除了CrudRepository,PagingAndSortingRepository抽象類,它添加了額外的方法來簡化對實體的分頁訪問:

public interface PagingAndSortingRepository<T, ID> extends CrudRepository<T, ID> {

  Iterable<T> findAll(Sort sort);

  Page<T> findAll(Pageable pageable);
}

獲取第二頁的20條數(shù)據,可以執(zhí)行以下操作:

PagingAndSortingRepository<User, Long> repository = // … get access to a bean
Page<User> users = repository.findAll(PageRequest.of(1, 20));

除了查詢方法之外,還提供了count和delete查詢的查詢派生。下面的列表顯示了一個派生count查詢的接口定義:

interface UserRepository extends CrudRepository<User, Long> {

  long countByLastname(String lastname);
}

下面的列表顯示了一個派生delete查詢的接口定義:

interface UserRepository extends CrudRepository<User, Long> {

  long deleteByLastname(String lastname);

  List<User> removeByLastname(String lastname);
}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容