介绍Spring Data Common里面的公用基本方法
(1)Spring Data Common的Repository
Repository位于Spring Data Common的lib里面,是Spring Data里面做数据库操作的最底层的抽象接口、最顶级的父类,源码里面其实什么方法都没有,仅仅起到一个标识作用。管理域类以及域类的id类型作为类型参数,此接口主要作为标记接口捕获要使用的类型,并帮助你发现扩展此接口的接口。Spring底层做动态代理的时候发现只要是它的子类或者实现类,都代表储存库操作
Repository的源码如下
有了这个类,我们就能顺藤摸瓜,找到好多Spring Data JPA提供的基本接口和操作类,及其实现方法。这个接口定义了所有Repostory操作的实体和ID两个泛型参数。我们不需要继承任何接口,只要继承这个接口,就可以使用Spring JPA里面提供的很多约定的方法查询和注解查询。
(2)CrudRepository方法详解
通过类关系图可以看到CrudRepository提供了公共的通用的CRUD方法。
CrudRepository interface内容
(1)保存实体方法。我们通过刚才的类关系查看其他实现类。SimpleJpaRepository里面的实现方法
我们发现它是先检查传进去的实体是不是存在,然后判断是新增还是更新;是不是存在两种根据机制,一种是根据主键来判断,另一种是根据Version来判断(后面讲解Version的时候详解)。如果我们去看JPA控制台打印出来的SQL,最少会有两条,一条是查询,一条是insert或者update。
(2)批量保存。原理和步骤(1)相同。实现方法就是for循环调用上面的save方法。
(3)根据主键查询实体。
(4)根据主键判断实体是否存在。
(5)查询实体的所有列表。
(6)根据主键列表查询实体列表。
(7)查询总数。
(8)根据主键删除。我们通过刚才的类关系查看其他实现类。SimpleJpaRepository里面的实现方法:
我们看到JPA会先去查询一下,再做保存,不存在抛出异常。这里特别强调一下delete和save方法,因为在实际工作中有的人会画蛇添足,自己先去查询再做判断处理,其实Spring JPA底层都已经考虑到了。
(3)PagingAndSortingRepository方法详解
果进行限制的基本的、常用的、通用的一些分页方法。
内容
(1)根据排序取所有对象的集合。
对象包含分页和Sort对象。
里面。
(4)JpaRepository方法详解
JpaRepository继承和拥有了QueryByExampleExecutor的相关方法。
现的查询结果变成了List。
(5)Repository的实现类SimpleJpaRepository
SimpleJpaRepository是JPA整个关联数据库的所有Repository的包括我们后面讲的Query Method。