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

Foxnic-Web简化了模型体系,创建默认的PO和VO类,并支持自定义模型。代码生成配置类的configModel方法集中处理模型配置,包括为PO和VO添加额外属性。此外,文章介绍了如何添加关联字段、创建新模型以及模型继承。建议开发者阅读生成的代码以理解模型特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

概述

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

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

        另外,由代码生成的模型有其规范和默认已经实现的方法,方便开发者的同时,也提高模型转换、克隆复制的性能。

        本文中的示例代码均可在 foxnic-samples: 用于展示和提供 Foxnic 相关的示例工程和代码 项目中找到,本文对照 webfull 项目讲解

调整 PO、VO 模型

        PO 源自数据表,它的字段和表字段一致,VO 继承 PO 主要用于传递请求参数,所以增加了一些默认字段。PO 是用于数据持久化,但也可以为其添加额外的字段,DAO 在保存 PO 时会自行判断,非表字段会被忽略。

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

        当然,也可以通过 shandow 方法配置属性映射到枚举或逻辑值,这样后期编写的代码会更加简洁。关于 shandow 方法请阅读 Foxnic-Web 代码生成 (4) —— shadow 方法的应用 - 掘金 一文。

        下面是 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,这方面的内容请参考 Foxnic-SQL (16) ——Foxnic-SQL的模型关联 - 掘金 。在 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 类型,以及如何配置自定义模型。建议大家在模型生成后,阅读生成的代码,以便深入了解模型特性。后面,我们也会安排具体章节讲解模型结构。

相关项目

foxnic: Foxnic基础框架,开发工具。

foxnic-web: FoxnicWeb是一个应用开发框架,高效、快速、稳定。

Foxnic-EAM固定设备资产管理系统: EAM固定资产设备管理系统,满足中小企业基本需求,对常用资产设备进行信息化管理,包含自定义支持各类设备、自带导入导出、维护工作统计、采购管理、文档管理、合同管理等功能

foxnic-samples: 用于展示和提供 Foxnic 相关的示例工程和代码

官方文档

Foxnic 开发文档 - 入门指南

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值