Foxnic-SQL (14) —— DAO 的 Service 扩展

LeeFJ
• 阅读 265

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 的功能导图:
Foxnic-SQL (14) —— DAO 的 Service 扩展
  下面是模块 Service 的功能导图:
Foxnic-SQL (14) —— DAO 的 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

点赞
收藏
评论区
推荐文章
爱丽丝13 爱丽丝13
3年前
参考阿里规范,优秀的 Java 项目代码该如何分层?
1.背景说起应用分层,大部分人都会认为这个不是很简单嘛就controller,service,mapper三层。看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,controller做的逻辑比service还多,service往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗。这样往往造成后
九路 九路
3年前
IntentService使用以及源码分析
一概述我们知道,在Android开发中,遇到耗时的任务操作时,都是放到子线程去做,或者放到Service中去做,在Service中开一个子线程来执行耗时操作。那么,在Service里面我们需要自己管理Service的生命周期,何时开启何时关闭,还是很麻烦的,还好Android给我们提供了一个这样的类,叫做IntentService那么Intent
Easter79 Easter79
2年前
ssm 不能将查询的结果返回到界面的一个原因
\在controller类中,应先定义一个ArrayList的集合即就是:List<ProductdefaultProductListnewArrayList();//实体类未Product其他的模块如下··dao、service都是定义的方法名··service的实现类返回dao的方法,即就是:p
Wesley13 Wesley13
2年前
@Repository、@Service、@Controller 和 @Component
@Repository、@Service、@Controller(https://my.oschina.net/u/1774615)和@Component将类标识为Beanspring自2.0版本开始,陆续引入了一些注解用于简化Spring的开发。@Repository注解便属于最先引入的一批,它用于将数据访问层(DAO层)的类
Stella981 Stella981
2年前
Action层, Service层 和 Dao层的功能区分
1.Action/Service/DAO简介:Action是管理业务(Service)调度和管理跳转的。 Service是管理具体的功能的。 Action只负责管理,而Service负责实施。 DAO只完成增删改查,虽然可以1n,nn,11关联,模糊、动态、子查询都可以。但是无论多么复杂的查询,dao
Stella981 Stella981
2年前
Spring 12 种 常用注解!
1.声明bean的注解@Component组件,没有明确的角色@Service在业务逻辑层使用(service层)@Repository在数据访问层使用(dao层)@Controller在展现层使用,控制器的声明(C)2.注入bean的注解@Autowired:由Spring提供@Inj
Easter79 Easter79
2年前
Spring中@Controller、@Repository、@Service、@Component注解的作用详解
Spring中使用在类上的常用注解有@Controller、@Repository、@Service、@Component,下面分别详细介绍一下他们的作用:1、@Controller:用于标注控制层服务。2、@Repository:用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件。3、@Service:用于标注业务逻辑层服务,主要
Wesley13 Wesley13
2年前
Java高级特性—反射和动态代理
1).反射  通过反射的方式可以获取class对象中的属性、方法、构造函数等,一下是实例:2).动态代理  使用场景:      在之前的代码调用阶段,我们用action调用service的方法实现业务即可。    由于之前在service中实现的业务可能不能够满足当先客户的要求,需要我们重新修改servic
LeeFJ LeeFJ
1年前
Foxnic-Web 代码生成 (1) —— 开始生成代码
使用FoxnicWeb以及FoxnicSQL进行应用开发时,都可以支持代码生成。他们的区别是,基于FoxnicSQL的快速main函数启动的应用,只需要生成Model和Service即可。基于FoxnicWeb开发Web应用时,除了生成Model和Service以外,还要生成Proxy、Controller、UI界面等。  Foxnic的代码生成是基于数据表的,所以当表结构变更,甚至只是注释的调整,我们也是建议重新生成必要的代码。在Foxnic的体系中,我们认为最初的表结构设计、ER图设计,就是这个系统设计的起点。后续的程序设计或数据结构设计都是表结构设计的延续。  Foxnic的代码生成体系希望开发者可以有一个较高的开发起点,可以基于生成的代码直接开发应用,甚至是代码生成后无需修改就可以直接使用了。另一方面,我们又不关闭二次开发的开放性,毕竟自由的修改代码才是软件系统可以按需定制的终极路径。这也是Foxnic体系没有走无代码或低代码平台的原因。
京东云开发者 京东云开发者
7个月前
SPI在Java中的实现与应用 | 京东物流技术团队
1SPI的概念APIAPI在我们日常开发工作中是比较直观可以看到的,比如在Spring项目中,我们通常习惯在写service层代码前,添加一个接口层,对于service的调用一般也都是基于接口操作,通过依赖注入,可以使用接口实现类的实例。简单形容就是这样的