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

Posted 吴川华仔博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

提供多条件查询

以上是关于Spring Data JPA 提供的各种Repository接口作用的主要内容,如果未能解决你的问题,请参考以下文章

Spring Data JPA

spring-data-jpa+hibernate 各种缓存的配置演示

使用 Spring Data JPA 获取两个日期之间的记录

什么是 Spring Data JPA 中的默认 ORM 提供程序

spring-data-jpa

Spring Data Jpa问题在一个事务中保存父,子和childofchild