在公司实习的时候,遇到这样一个问题,就是当往数据库添加记录的时候,需要先去查看数据库中的记录数是否超过了最大限制,如果没有超过则进行添加;否则就需要删除先前的记录从而保证数据库中的记录数。这样的话,当调用dao层的save方法时,如果只是使用jpa提供的save方法,显然是达不到要求的。所以我通过翻找项目代码以及翻阅博客,对如果使用自定义的Repository有了一定的认识。

        1. 当创建一个UserRepository接口继承JpaRepository后,调用对应的save方法时,jpa会自动创建这个接口的实现类,并调用SimpleJpaRepository里面的save方法。

       2. 如果想要使用自己执行save方法的逻辑,则需要一个自定义类去继承SimpleJpaRepository并重写save方法,这个自定义类也就是我们自定义的Repository。

     3. 在 CustomerBaseRepository 类中重写 SimpleJpaRepository 中的 save 方法。 

    4. 在springboot的启动类中添加 需要扫描的 jpa中的 repository 路径 以及指定自定义的 repository类。这样的话,spring框架就会自动扫描到 CustomerBaseRepository 类并用它替代 

SimpleJpaRepository 执行其他添加 @Repository 注解的接口 的 save方法。

    注意:CustomerBaseRepository 不需要添加 @Repository 注解,因为指定好了spring容器就可以扫描到这个类。如果添加 @Repository 类会导致找不到 SimpleJpaRepository 构造方法中的 JpaEntityInformation 和 EntityManager ,从而使得spring容器启动失败。

     5. 调用 UserRepository. save方法,会自动进入到 CustomerBaseRepository 中重写的 save 方法,这样就完成了 自定义 Repository 的使用,也符合 调用 save 方法需要执行的业务逻辑了。

以上就是我对springboot项目中如果使用自定义的 Repository 的理解了,如有不足请批评指正。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部