当前位置: 首页 > 后端技术 > Java

Foxnic-Web代码生成(二)——代码生成配置类

时间:2023-04-01 23:29:11 Java

Foxnic-Web代码生成(二)——代码生成配置类概述在上一节中,我们已经描述了代码生成的基本步骤,但细节就不说了覆盖。有多种方法可以使用Foxnic-Generator包进行代码生成。我们这里提到的配置类就是其中之一。例如在Foxnic-EAM项目中,很多代码生成并不是使用配置类完成的。我们优先对配置类进行讲解,显然配置类有它的优点。首先,配置类被数据表隔离,一张数据表,一个模块,一个配置类。其次,在配置类内部,根据不同的配置对象,在不同的方法中编写配置代码。比如配置模型时在configModel方法中写配置代码,配置字段时在configFields方法中写配置代码。那么为什么要使用Java类而不是Json、XML或YML来配置代码生成呢?首先,无论是Json,XML还是YML,还是Java,你在编辑器中输入文本。那么哪种方式是最方便的文本输入方式呢?自然是Java,因为开发工具的强大支持。本文的示例代码可以在https://gitee.com/LeeFJ/foxni...项目中找到,本文结合webfull项目进行说明。配置类代码生成配置类都是ModuleCodeConfig类的子类。ModuleCodeConfig类中定义了几种方法。这些方法允许我们按类别配置模块代码的所有方面。在生成代码的时候,这些方法会按照一定的顺序被调用,最终生成我们想要的代码。我们先看一个例子:packageorg.github.foxnic.web.generator.module.mall;importcom.github.foxnic.generator.builder.business.option.ServiceOptions;importcom.github.foxnic.generator.builder。模型.PoClassFile;导入com.github.foxnic.generator.builder.model.VoClassFile;导入com.github.foxnic.generator.builder.view.option.*;导入com.github.foxnic.generator.config.WriteMode;导入com.leefj.webfull.constants.db.WebFullTables.WEBFULL_EXAMPLE_ORDER;导入com.leefj.webfull.domain.example.Address;导入com.leefj.webfull.domain.example.meta.OrderMeta;导入com.leefj.webfull.proxy.example.AddressServiceProxy;importorg.github.foxnic.web.generator.module.BaseCodeConfig;publicclassExampleOrderConfigextendsBaseCodeConfig{/***配置模型,为po和vo等添加额外的属性*/@重写publicvoidconfigModel(PoClassFilepoType,VoClassFilevoType){poType.addSimpleProperty(Address.class,"address","re??cipientaddress","关联收件人地址对象");}/***配置字段*/@OverridepublicvoidconfigFields(ViewOptionsview){//ID字段通常是隐藏的view.field(WEBFULL_EXAMPLE_ORDER.ID).basic().hidden();//NAME字段,单行文本框view.field(WEBFULL_EXAMPLE_ORDER.ORDER_NO)//搜索栏:设置模糊搜索.search().fuzzySearch()//表格列:指定对齐方式.table().alignLeft()//表单:指定表单编辑器为文本输入框,并指定默认值.form().textInput()//表单验证:required.form().validate().required();//NAME字段,单行文本框view.field(WEBFULL_EXAMPLE_ORDER.ADDRESS_ID).basic().label("收件人地址").form().selectBox().queryApi(AddressServiceProxy.QUERY_LIST).valueField("id").textField("address").fillWith(OrderMeta.ADDRESS)//表单验证:required.form().validate().required();}/***配置搜索*/@OverridepublicvoidconfigSearch(ViewOptionsview,SearchAreaOptionssearch){//搜索布局search.inputLayout(newObject[]{WEBFULL_EXAMPLE_ORDER.ORDER_NO});}/***配置列表表单*/@OverridepublicvoidconfigList(ViewOptionsview,ListOptionslist){list.operationColumn().addActionButton("Details","openItems");}/***配置表单*/@OverridepublicvoidconfigForm(ViewOptionsview,FormOptionsform,FormWindowOptionsformWindow){formWindow.width("800px");form.labelWidth(85);}/***配置源码覆盖率*/@OverridepublicvoidconfigOverrides(){//文件生成覆盖模式context.overrides().setServiceIntfAnfImpl(WriteMode.COVER_EXISTS_FILE)//服务和接口.setControllerAndAgent(WriteMode.COVER_EXISTS_FILE)//Rest.setPageController(WriteMode.COVER_EXISTS_FILE)//页面控制器.setFormPage(WriteMode.COVER_EXISTS_FILE)//表格单个HTMLpage.setListPage(WriteMode.COVER_EXISTS_FILE)//列表HTMLpage.setExtendJsFile(WriteMode.COVER_EXISTS_FILE);}/***配置服务代码*/@OverridepublicvoidconfigService(ServiceOptionsservice){}publicExampleOrderConfig(){super("webfull-service-example",WEBFULL_EXAMPLE_ORDER.$TABLE,"webfull_example_");}}这是生成订单管理代码的配置。我们可以看到这个配置类实现了configModel,configFields,configSearch,configList,configForm,configOverrides,configService这些方法,下面来一一介绍一下这些方法的作用。该方法使用configModel配置模型,配置PO、VO或添加新模型。configFields配置字段,表单、表单和搜索框的配置字段。configView配置视图configSearch配置搜索栏configList配置表,列表configForm配置表单configController配置界面控制器configService配置服务configBPM可选,如果启用流程,可以配置流程相关配置的更改方法。configOverrides配置代码文件的覆盖模式。最后将模块的配置类注册到WebFullCodeStarter,启动WebFullCodeStarter,根据控制台提示输入序列号,生成对应的模块代码。总结本节主要介绍Foxnic-SQL和oxnic-Web代码生成中配置类的原理和作用。本文明确了配置类中各个方法的作用,可以根据需要自行实现。配置类的各个方法是如何实现的,本节我们没有展开,在后面的章节中会一一介绍。相关项目https://gitee.com/LeeFJ/foxnichttps://gitee.com/LeeFJ/foxni...https://gitee.com/lank/eamhttps://gitee.com/LeeFJ/foxni。..官方文档http://foxnicweb.com/docs/doc…