乐趣区

关于后端:FoxnicWeb-代码生成-3-配置模型

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 增加 额定的属性等
*/
@Override
public 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 增加 额定的属性等
*/
@Override
public 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…

退出移动版