ESB DATA使用手册_v1.0.2.docx_第1页
ESB DATA使用手册_v1.0.2.docx_第2页
ESB DATA使用手册_v1.0.2.docx_第3页
ESB DATA使用手册_v1.0.2.docx_第4页
ESB DATA使用手册_v1.0.2.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ESB DATA使用手册V1.0目录ESB DATA使用手册1V1.011简介12ESB DATA JPA12.1场景一:只定义接口12.1.1定义接口22.1.2配置xml32.1.3获取接口实例32.2场景二:自定义接口及实现32.2.1定义接口42.2.2配置xml52.3场景三:使用方法命名查询52.3.1定义接口62.3.2配置xml61 简介在进行持久化操作时,通常会对每一个实体都定义一个DAO接口,其中既有一些通用的CRUD方法,也可能存在一些业务特有的方法。每个DAO接口都要有一个实现,在实现中既要实现业务特有的方法,还需要重复雷同的实现通用的CRUD方法。有什么方法可以让我们的DAO编程变得更简单些吗?ESB DATA就是用于解决这个问题。最简单的情况,你可以只定义接口,继承某个特有的接口(如IBaseRepository),无需实现,框架自动注册实现并发布OSGI服务,就能完成对应的功能。接下来就具体使用进行详细说明。2 ESB DATA JPA2.1 场景一:只定义接口IBaseRepository接口已满足业务需求。2.1.1 定义接口package com.ufida.eip.data.jpa.repository.test;import com.ufida.eip.data.jpa.repository.IBaseRepository;import com.ufida.eip.jpa.testcase.model.eip.Group;public interface IGroupRepository extends IBaseRepositoryIBaseRepository继承了IBaseDao,定义如下:public interface IBaseRepository extends Repository, IBaseDaoImport-Package: com.ufida.eip.data.jpa.repository;version=1.0.0,2.0.0),com.ufida.eip.data.jpa.repository.annotation;version=1.0.0,2.0.0),com.ufida.eip.data.jpa.repository.domain;version=1.0.0,2.0.0),com.ufida.eip.data.jpa.repository.support;version=1.0.0,2.0.0),com.ufida.eip.exception.dao;version=1.0.0,2.0.0),com.ufida.eip.jpa.dao;version=1.0.0,2.0.0),com.ufida.eip.jpa.dao.callback;version=1.0.0,2.0.0),com.ufida.eip.jpa.dao.query;version=1.0.0,2.0.0),javax.persistence;version=2.0.0,3.0.0),org.aopalliance.aop;version=1.0.0,2.0.0),org.springframework.aop;version=3.0.0,4.0.0),org.springframework.aop.framework;version=3.0.0,4.0.0),org.springframework.dao.support;version=3.0.0,4.0.0),org.springframework.data.repository;version=1.0.0,2.0.0), org.springframework.data.repository.core.support;version=1.0.0,2.0.0),org.springframework.osgi.service.exporter.support;version=2.0.0,3.0.0),org.springframework.osgi.service.importer.support;version=2.0.0,3.0.0)2.1.2 配置xml2.1.3 获取接口实例在其它Bundle可以通过OSGI服务来获取接口实例。BundleContext.getServiceReference(“com.ufida.eip.data.jpa.repository.test .IGroupRepository”)2.2 场景二:自定义接口及实现IBaseRepository接口满足不了业务需求,又或是需要用IBaseDao的多个方法封装成一个方法。此时可以定义额外的接口及对应的接口实现。2.2.1 定义接口package com.ufida.eip.data.jpa.repository.test;import com.ufida.eip.data.jpa.repository.IBaseRepository;import com.ufida.eip.jpa.testcase.model.eip.Group;public interface IGroupAdditionalRepositoryvoid doSomething(String key);package com.ufida.eip.data.jpa.repository.test;import com.ufida.eip.data.jpa.repository.IBaseRepository;import com.ufida.eip.jpa.testcase.model.eip.Group;public interface IGroupRepository2 extends IBaseRepository, IGroupAdditionalRepositorypackage com.ufida.eip.data.jpa.repository.test;import com.ufida.eip.data.jpa.repository.IBaseRepository;import com.ufida.eip.jpa.testcase.model.eip.Group;/注意:此处的实现类名应该用最外层的接口名(去除起始的字符I)+”Impl”。public class GroupRepository2Impl implements IGroupAdditionalRepositoryprivate IBaseDao baseDao;public void doSomething(String key)/do something with baseDaopublic void setBaseDao(IBaseDao baseDao) this.baseDao = baseDao;2.2.2 配置xmlTips:1.遵循约定大于配置原则。接口实现类名的约定为:最外层的接口名(去除起始的字符I)+”Impl”。1.如果GroupRepositoryImp中不需要注入其它的Spring Bean,则上述xml中2处的配置可以省略。2.可以使用自动连线方式。2.3 场景三:使用Annotation配置参数2.3.1 定义接口public interface IOrderRepository extends IBaseRepository/* 1 查询name等于指定参数的单个Order。如果存在多个匹配的记录,则会抛出异常。 */Order queryOrder(Conditionable(property=name) String name);/* 2.1.1 查询name等于指定参数的Order集合 */List queryOrders(Conditionable(property=name) String name);/* 2.1.2 查询name等于指定参数的Order集合,并把结果封装成OrderWrapper */QueryFields(includes=name, type)List queryOrderWrappers(Conditionable(property=name) String name);/* 2.2.1 查询name等于指定参数的Order集合,并把关联的OrderItem对象查询出来。 */Fetch(fetchProperty=items)List queryOrders2();/* 2.2.2 效果等同于2.2.1 */Fetchs(Fetch(fetchProperty=items)List queryOrders();/* 2.2.3 从Order fetch OrderItem,再从OrderItem fetch Product。 */Fetchs(Fetch(fetchProperty=items, alias=orderItem), Fetch(fetchProperty=orderIduct)List queryOrders3();/* 3.1 查询分页结果集。参数的顺序可以任意的。 */Fetchs(Fetch(fetchProperty=items)PaginationResult queryPaginationOrders(Pageable pageable, Conditionable(property=name, operator=Operator.LIKE) String name);/* 3.2 查询分页结果集。*/Fetchs(Fetch(fetchProperty=items)PaginationResult queryPaginationOrders2(Conditionable(property=name, operator=Operator.LIKE) String name, Object anyKey);2.3.2 配置xml同上2.4 场景四:使用方法命名查询不推荐使用方法名称来查询这种方式,因在IDE中类或属性名发生变更无法自动更新相应的命名查询。2.4.1 定义接口package com.ufida.eip.data.jpa.repository.test;im

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论