<a name="imPZx"></a>
Foxnic-SQL (14) —— DAO 的 Service 扩展
<a name="nUzwx"></a>
概述
Foxnic-SQL 中的 Service 有点像 DDD 中的 Repository ,但 Foxnic 体系里面又没有将 Repository 和 Service 区分开来,所以它更有点像两者的合体。但,他们的合与分本身是弹性的,具体还是要看业务场景的需要。在很多项目中,好多时候,Controller 是 Service 的二传手,或许它也会成为 Repository 的三传手。所以,到底是单传还是二传或是三传还是要看项目、看场景。<br /> Foxnic-SQL 中的 Service 就是将数据操作的目标具体化,它初始的样子就是针对单个表、单个实体的数据操作者。Service 在使用时需要代码生成工具由数据表生成 Po、Vo 对象,Service 接口以及接口实现。关于如何生成这些代码,我们不在此节展开。在此我们主要是了解如何使用 Service 已经为开发者提供的诸多功能。<br /> 本文中的示例代码均可在 https://gitee.com/LeeFJ/foxnic-samples 项目中找到。 <a name="oDmtc"></a>
Service方法导图
Foxnic-SQL 提供的基础 Service 功能是很强大的,几乎包括了单表数据操作的方方面面。Service 的实现分为两层,基础功能在 SuperService 基类实现,具体表的 Service 继承了 SuperService。下面是 SuperService 的功能导图:<br />
<br /> 下面是模块 Service 的功能导图:<br />
关于以上两个思维导图的详细介绍,请到 http://foxnicweb.com/docs/doc.html#0,4 查看相关视频:模块服务层、SuperService 这两个视频集合。 <a name="Un8pE"></a>
简单示例
下面给出 Service 的简单示例,更多功能小伙伴们可以按照上面的思维导图结合视频自行探索。
1public class ServiceDemo { 2 public static void main(String[] args) { 3 demo_1(); 4 } 5 /** 6* Service 使用的示例 7* */ 8 public static void demo_1() { 9 // 获得 Service 对象 10 IAddressService service= DBInstance.DEFAULT.getService(AddressServiceImpl.class); 11 // 设置 Po 值 12 Address address=new Address(); 13 address.setRegionType("国内"); 14 address.setRegionLocation("华东"); 15 address.setAddress("宁波"); 16 address.setName("LeeFJ"); 17 address.setPhoneNumber("13444025142"); 18 // 插入对象 19 Result r=service.insert(address); 20 System.out.println("after insert : "+JSON.toJSON(r)); 21 // 插入成功后查询 22 if (r.success()) { 23 Address addressInDB=service.getById(address.getId()); 24 System.out.println("from db : "+JSON.toJSON(addressInDB)); 25 } 26 // 物理删除 27 r = service.deleteByIdPhysical(address.getId()); 28 System.out.println("after delete : "+JSON.toJSON(r)); 29 } 30}
<a name="GOsQK"></a>
小结
本节主要介绍了在 Foxni-SQL DAO 的 Service 扩展,使用 Service 扩展前请大家先了解代码生成,当然按示例代码依样画葫芦应该是最快速切入的方式。本节给出一个简单示例,希望可以起到一定的借鉴作用。 <a name="VZBg5"></a>
相关项目
https://gitee.com/LeeFJ/foxnic<br /> https://gitee.com/LeeFJ/foxnic-web<br /> https://gitee.com/lank/eam<br /> https://gitee.com/LeeFJ/foxnic-samples <a name="HPU3W"></a>
