Spring Data JPA从入门到精通
上QQ阅读APP看书,第一时间看更新

2.3 CrudRepository方法详解

通过类关系图可以看到CrudRepository提供了公共的通用的CRUD方法。

2.3.1 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底层都已经考虑到了。

2.3.2 CrudRepository interface的使用示例

使用也很简单,只需要自己的Repository继承CrudRepository即可。

第1章的示例我们修改如下:UserCrudRepository继承CrudRepository。

第1章的示例UserController修改如下:

然后启动运行就可以直接看效果了。