共计 2649 个字符,预计需要花费 7 分钟才能阅读完成。
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…