Foxnic-Web 代码生成 (3) —— 配置模型

概述

  Foxnic-Web 对模型体系进行了简化,默认创立 PO 和 VO 类,且 VO 继承自 PO。其它代码基于 PO 和 VO 实现。当然开发者也能够按需自定义模型,但自定义模型并不倡议手动创立,而是通过代码生成工具进行创立。

  代码生成配置类的 configModel 办法将全副的模型配置集中于此,不便站在全局的高度了解与分析模型。开发者不用关怀新建的模型应该放在哪个包上面,这些在代码生成配置上都曾经定义,无需时时关注。

  另外,由代码生成的模型有其标准和默认曾经实现的办法,不便开发者的同时,也进步模型转换、克隆复制的性能。

  本文中的示例代码均可在 https://gitee.com/LeeFJ/foxni... 我的项目中找到,本文对照 webfull 我的项目解说

调整 PO、VO 模型

  PO 源自数据表,它的字段和表字段统一,VO 继承 PO 次要用于传递申请参数,所以减少了一些默认字段。PO 是用于数据长久化,但也能够为其增加额定的字段,DAO 在保留 PO 时会自行判断,非表字段会被疏忽。

  代码生成配置类的 configModel 办法默认会传入 PO、VO 类的配置文件,开发者能够为其增加额定的属性。PO 上通常会增加关联的对象,VO 上则更多的会增加出入参数。、

  当然,也能够通过 shandow 办法配置属性映射到枚举或逻辑值,这样前期编写的代码会更加简洁。对于 shandow 办法请浏览 https://juejin.cn/post/717095... 一文。

  上面是 configModel 的示例:

/*** 配置模型,为 po 和 vo 增加 额定的属性等*/@Overridepublic void configModel(PoClassFile poType, VoClassFile voType) {    // 1、为 po 增加属性    poType.addSimpleProperty(Integer.class, "orderCount", "订单量", "每年收到的订单数量");    poType.addListProperty(Goods.class,"goodsList","订单明细商品","订单明细商品");    poType.addListProperty(OrderItem.class,"itemList","订单明细","订单明细");    poType.addListProperty(Order.class,"orderList","订单","订单");    // 2、为 vo 增加属性    voType.addSimpleProperty(String.class, "keyword", "关键字", "查问关键字");}

  须要特地阐明的是,如若配置了关联字段且查问时须要填充值,则须要配置关联关系并实现 join,这方面的内容请参考 https://juejin.cn/post/718462... 。在 PO 保留时,扩大字段并不会主动保留(哪怕是配置了关联关系),它须要手动编写代码保留。因为扩大数据保留可能存在业务逻辑,DAO 无奈解决这些,开发人员按需保留是一个得当的抉择。

减少新模型

  PO、VO 类的代码是默认生成的,除此之外可能还须要其它模型的反对,Foxnic 的代码生成反对额定模型的生成,并且反对模型间的继承关系。示例如下:

/*** 配置模型,为 po 和 vo 增加 额定的属性等*/@Overridepublic void configModel(PoClassFile poType, VoClassFile voType) {    // 3、独自创立一个 Model    PojoClassFile addressModel = context.createPojo("AddressModel");    // 使继承自 Entity    addressModel.setSuperType(Entity.class);    // 增加一个自定义属性    addressModel.addSimpleProperty(String.class, "myProperty", "自定义属性", "我的自定义属性");    // 应用字段构建器构建    FieldsBuilder fields = this.createFieldsBuilder();    fields.addAll().removeDBTreatyFields();    // 增加字段构建器作为字段构建的起源    addressModel.addSimpleProperties(fields);    // 4、定义一个子类型    PojoClassFile addressSubModel = context.createPojo("AddressSubModel");    addressSubModel.setSuperTypeFile(addressModel);    addressSubModel.addSimpleProperty(String.class, "postCode1", "邮编1", "邮编1");    addressSubModel.addSimpleProperty(String.class, "postCode2", "邮编2", "邮编2");    // 5、定义一个没有父类的对象模型    PojoClassFile addressPureModel = context.createPojo("AddressPureModel");    addressPureModel.noSuperType();    fields = this.createFieldsBuilder();    fields.addAll().removeDBTreatyFields();    addressPureModel.addSimpleProperties(fields);}

  通过代码生成创立模型好处多多,本文概述局部曾经提及,重要的事件还是多说几遍 :) 。

小结

  本节次要介绍了在 Foxnic-SQL 和 Foxnic-Web 代码生成时如何配置 PO、VO 类型,以及如何配置自定义模型。倡议大家在模型生成后,浏览生成的代码,以便深刻理解模型个性。前面,咱们也会安顿具体章节解说模型构造。

相干我的项目

  https://gitee.com/LeeFJ/foxnic

  https://gitee.com/LeeFJ/foxni...

  https://gitee.com/lank/eam

  https://gitee.com/LeeFJ/foxni...

官网文档

  http://foxnicweb.com/docs/doc...