前言
JPA扩展主要有两种:一是直接针对某一个实体进行扩展;一是针对全局进行扩展。本次主要讲的是后者。
纲举目张啊!!!
具体步骤
为所有Repository提供公用的自定义方法:
- 声明一个接口,继承Repository接口或其子接口,并且声明需要添加的方法。
- 提供上述接口的实现类,并继承SimpleJpaRepository(这个方法就是JPA很多方法的实现)。注意:全局的扩展实现类就不要用RepositoryImpl作为后缀;而是添加@NoRepositoy
这个表示该接口不会创建这个接口的实例(我们原来定义的StudentPageRepository这些,Spring Data JPA的基础组件都会自动为我们创建一个实例对象,加上这个annotation,spring data jpa的基础组件就不会再为我们创建它的实例)
- 定义RepositoryFactoryBean的实现类,使用其生成1定义的接口实现类的对象。就是注册我们自己定义的Repository实现。写法具体参照Spring Data的JpaRepositoryFactoryBean和JpaRepositoryFactory。
- 配置,让spring加载时使用我们自定义这个工厂类。使用Springboot时,如下添加即可:
@EnableJpaRepositories(basePackages = {"org....."},
repositoryFactoryBeanClass = ?????.class//指定自己的工厂类)
- 结束了,可以正常使用了。就是写个接口继承一下,而且还可以比原来少写继承呢,然后就拿去使用了。
代码
后补吧!
参考
其他网络文章与官网。
谢谢!
网友评论