Spring Data JPA 提供的各種Repository接口作用


各種Repository接口繼承關系:

Repository :

public interface UserRepository  extends Repository<User, Integer> {
}
  • 方法命名規則查詢方式:
findByNameLike(String name)
findByName(String name)
findByNameAndAge(String name, Integer age)
findByNameOrAddress(String name)
...

參考:

https://www.jianshu.com/p/1d6f27f675bb
https://www.jianshu.com/p/1d6f27f675bb
  • 基於@Query注解的查詢和更新

    1. 基於@Query注解的查詢

      • JPQL 方式

        @Query("form User WHERE name = ?1")
        List<User> findByName(String name);
        

        ps: JPQL 占位符索引是從1開始的。

      • SQL 方式

        @Query("select * from User WHERE name = ?1")
        List<User> findByName(String name);
        
    2. 基於@Query注解的更新

      基於@Query注解的更新需要增加@Modifying

      • JPQL 方式

        @Query("Update User set name = ?1 WHERE id = ?2")
        @Modifying
        int updateNameAndId(String name, Integer id);
        
      • SQL 方式

        @Query("update user set name = ?1 WHERE id = ?2")
        @Modifying
        int updateNameAndId(String name, Integer id);
        

CrudReposiroty :

CrudRepository: 主要是進行增刪改查的方法 

PagingAndSortingRepository :

PagingAndSortingRepository: 主要是進行排序或者分頁

JPARepository

JPARepository: 主要對繼承父接口中方法的返回值進行了適配,因為在父類接口中通常都返回迭代器,需要我們自己進行強制類型轉化。而在JpaRepository中,直接返回了List

JpaSpecificationExecutor

JpaSpecificationExecutor: 主要提供了多條件查詢的支持,並且可以在查詢中添加分頁和排序。 

總結 :

Spring Data Jpa中一共提供了

Repository:
  • 支持方法命名查詢 (提供了findBy + 屬性方法 )

  • @Query

    ​ HQL: nativeQuery 默認false

      SQL: nativeQuery 默認true

      	更新的時候,需要配合@Modifying使用
    
CurdRepository:

繼承了Repository 主要提供了對數據的增刪改查

PagingAndSortRepository:

繼承了CrudRepository 提供了對數據的分頁和排序,缺點是只能對所有的數據進行分頁或者排序,不能做條件判斷

JpaRepository:

繼承了PagingAndSortRepository,開發中經常使用的接口,主要繼承了PagingAndSortRepository,對返回值類型做了適配

JpaSpecificationExecutor

提供多條件查詢


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM