全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
重庆达渝仁科技官网:扩展 Spring Data JPA在编写 Spring Data JPA 的 DAO 时, 只需在接口中按规约提供方法的声明即可。 而有些业务实现无法通过声明方法或编写简单 SQL 实现, 这就需要扩展Spring Data JPA。本文主要探讨 2 个问题:1. 如何为某一个特定 Repository 添加自定义方法。2. 如何为所有的 Repository 添加自定义的方法。问题 1: 为某一个特定 Repository 添加自定义方法。 具体步骤:1) 定义一个接口 : 声明要添加的方法2) 提供该接口的实现类: 类名需符合 EntityNameRepositoryImpl 格式, 并提供方法的实现3) 声明一个 Repository 接口 , 并继承 1) 声明的接口4) 使用5) 注意: 默认情况下, Spring Data 会在 base-package 中查找 接口名 Impl作为实现类. 也可以通过 repository-impl-postfix 声明后缀示例代码:1) 定义一个接口 : 声明要添加的方法package com.atguigu.jpa.repository;public interface EmployeeDao void method();2) 提供该接口的实现类: 类名需符合 EntityNameRepositoryImpl 格式, 并提供方法的实现package com.atguigu.jpa.repository;import javax.persistence.EntityManager;import javax.persistence.PersistenceContext;public class EmployeeRepositoryImpl implements EmployeeDao /获取当前线程的 EntityManager 实例 PersistenceContext private EntityManager entityManager; Override public void method() System.out.println(method. + entityManager);3) 声明一个 Repository 接口 , 并继承 1) 声明的接口package com.atguigu.jpa.repository;import org.springframework.data.jpa.repository.JpaRepository;import com.atguigu.jpa.beans.Employee;public interface EmployeeRepository extends JpaRepository, EmployeeDao4) 使用EmployeeRepository employeeRepository = ctx.getBean(EmployeeRepository.class);employeeRepository.method();问题 2: 为所有的 Repository 添加自定义的方法。 具体步骤:1) 声明一个接口 , 在该接口中声明需要自定义的方法, 该接口需要继承Spring Data 的 Repository 接口或其子接口 .2) 提供 1) 所声明的接口的实现类. 且继承 SimpleJpaRepository, 并提供方法的实现。 注意: 全局的扩展实现类不要用RepositoryImp作为后缀名,或为全局扩展接口添加NoRepositoryBean 注解告知 Spring Data: 该实现类不是一个 Repository3) 定义 RepositoryFactoryBean 的实现类, 使其生成 1) 定义的接口实现类的对象4) 修改 节点的 factory-class 属性指向 3) 的全类名5) 使用示例代码:1) 声明一个接口 , 在该接口中声明需要自定义的方法 , 该接口需要继承Spring Data 的 Repository 接口或其子接口.package com.atguigu.jpa.repository;import java.io.Serializable;import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.data.repository.NoRepositoryBean;NoRepositoryBeanpublic interface BaseDao extends JpaRepository void method2();2) 提供 1) 所声明的接口的实现类. 且继承 SimpleJpaRepository, 并提供方法的实现。 注意: 全局的扩展实现类不要用 RepositoryImp 作为后缀名,或为全局扩展接口添加 NoRepositoryBean 注解告知 Spring Data: 该实现类不是一个 Repositorypackage com.atguigu.jpa.repository;import java.io.Serializable;import javax.persistence.EntityManager;import org.springframework.data.jpa.repository.support.SimpleJpaRepository;public class BaseDaoImpl extends SimpleJpaRepository implements BaseDao private EntityManager entityManager; public BaseDaoImpl(Class domainClass, EntityManager em) super(domainClass, em); this.entityManager = em; Override public void method2() System.out.println(method2. + entityManager); 3) 定义 RepositoryFactoryBean 的实现类, 使其生成 1) 定义的接口实现类的对象package com.atguigu.jpa.repository;import java.io.Serializable;import javax.persistence.EntityManager;import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.data.jpa.repository.support.JpaRepositoryFactory;import org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean;import org.springframework.data.repository.core.RepositoryMetadata;importorg.springframework.data.repository.core.support.RepositoryFactorySupport;public class BaseDaoRepositoryFactoryBeanR extends JpaRepository, S, ID extends Serializable extends JpaRepositoryFactoryBean Override protected RepositoryFactorySupport createRepositoryFactory( EntityManager entityManager) return new BaseDaoFactory(entityManager); private static class BaseDaoFactory extends JpaRepositoryFactory public BaseDaoFactory(EntityManager entityManager) super(entityManager); Override protected JpaRepository getTargetRepository(RepositoryMetadata metadata, EntityManager entityManager) return new BaseDaoImpl(metadata.getDomainType(), entityManager); Override protected Class getRepositoryBaseClass( RepositoryMetadata metad
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自然保护区电子教案
- 博物馆展品管理与文化传承方案
- 初三语文学习计划11篇
- 互联网医院AI糖尿病管理平台的运营实践
- 乙肝肝硬化的个体化抗病毒治疗决策
- 马来西亚项目市场分析报告-课件
- 数学与应用数学专业毕业论文标题
- 师范大学自考汉语言文学毕业论文参考选题
- 湖南省房屋建筑和市政基础设施工程“机器管招投标”模块化招标文件示范文本(施工)(2025年11月版)
- 文献检索题目
- 2025内蒙古呼和浩特春华水务开发集团有限责任公司招聘工作人员84人笔试备考试卷带答案解析
- 健身房开业投资预算方案
- 水稻种子采购合同范本
- 2025城发环保能源(汝南)有限公司招聘4人笔试历年备考题库附带答案详解试卷3套
- 河北省沧衡名校联盟2025-2026学年高三上学期11月期中考试语文试题(含答案)
- 2025年酉阳土家族苗族自治县辅警招聘考试真题附答案详解(满分必刷)
- 世界艾滋病日健康讲座
- 2025-2026学年河南省天一大联考高一上学期9月月考历史试题
- 【数】综合与实践 最短路径问题课时1课件2025-2026学年八年级数学人教版2024上册
- 省级总代理合同协议范本2024
- 物业公司服务标准手册
评论
0/150
提交评论