Foxnic-SQL (14) —— DAO 的 Service 扩大
概述
Foxnic-SQL 中的 Service 有点像 DDD 中的 Repository ,但 Foxnic 体系外面又没有将 Repository 和 Service 辨别开来,所以它更有点像两者的合体。但,他们的合与分自身是弹性的,具体还是要看业务场景的须要。在很多我的项目中,好多时候,Controller 是 Service 的二传手,或者它也会成为 Repository 的三传手。所以,到底是单传还是二传或是三传还是要看我的项目、看场景。
Foxnic-SQL 中的 Service 就是将数据操作的指标具体化,它初始的样子就是针对单个表、单个实体的数据操作者。Service 在应用时须要代码生成工具由数据表生成 Po、Vo 对象,Service 接口以及接口实现。对于如何生成这些代码,咱们不在此节开展。在此咱们次要是理解如何应用 Service 曾经为开发者提供的诸多性能。
本文中的示例代码均可在 https://gitee.com/LeeFJ/foxnic-samples 我的项目中找到。
Service办法导图
Foxnic-SQL 提供的根底 Service 性能是很弱小的,简直包含了单表数据操作的方方面面。Service 的实现分为两层,根底性能在 SuperService 基类实现,具体表的 Service 继承了 SuperService。上面是 SuperService 的性能导图:
上面是模块 Service 的性能导图:
对于以上两个思维导图的具体介绍,请到 http://foxnicweb.com/docs/doc.html#0,4 查看相干视频:模块服务层、SuperService 这两个视频汇合。
简略示例
上面给出 Service 的简略示例,更多功能小伙伴们能够依照下面的思维导图联合视频自行摸索。
public class ServiceDemo { public static void main(String[] args) { demo_1(); } /*** Service 应用的示例* */ public static void demo_1() { // 取得 Service 对象 IAddressService service= DBInstance.DEFAULT.getService(AddressServiceImpl.class); // 设置 Po 值 Address address=new Address(); address.setRegionType("国内"); address.setRegionLocation("华东"); address.setAddress("宁波"); address.setName("LeeFJ"); address.setPhoneNumber("13444025142"); // 插入对象 Result r=service.insert(address); System.out.println("after insert : "+JSON.toJSON(r)); // 插入胜利后查问 if (r.success()) { Address addressInDB=service.getById(address.getId()); System.out.println("from db : "+JSON.toJSON(addressInDB)); } // 物理删除 r = service.deleteByIdPhysical(address.getId()); System.out.println("after delete : "+JSON.toJSON(r)); }}
小结
本节次要介绍了在 Foxni-SQL DAO 的 Service 扩大,应用 Service 扩大前请大家先理解代码生成,当然按示例代码如法炮制应该是最疾速切入的形式。本节给出一个简略示例,心愿能够起到肯定的借鉴作用。
相干我的项目
https://gitee.com/LeeFJ/foxnic
https://gitee.com/LeeFJ/foxnic-web
https://gitee.com/lank/eam
https://gitee.com/LeeFJ/foxnic-samples
官网文档
http://foxnicweb.com/docs/doc.html