Foxnic-Web代码生成(三)——配置模型概述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中。,当然也可以通过shallow方法配置属性映射为枚举或者逻辑值,这样后面写的代码会更加简洁。影子法请看https://juejin.cn/post/717095...下面是configModel的一个例子:/***配置模型,为po和vo等添加额外的属性*/@OverridepublicvoidconfigModel(PoClassFilepoType,VoClassFilevoType){//1.为popoType添加属性。addSimpleProperty(Integer.class,"orderCount","OrderQuantity","每年收到的订单数");poType.addListProperty(Goods.class,"goodsList","订单明细产品","订单明细产品");poType.addListProperty(OrderItem.class,"itemList","订单详情","订单详情");poType.addListProperty(Order.class,"orderList","Order","Order");//2.为vo添加属性voType。addSimpleProperty(String.class,"keyword","keyword","querykeyword");}需要注意的是,如果配置了关联字段,查询时需要填写值,则需要配置关联和完成加入。这方面的内容请参考https://juejin.cn/post/718462...。保存PO时,不会自动保存扩展字段(即使配置了关联关系),需要手动写代码保存。因为扩展数据存储中可能存在业务逻辑,DAO无法处理这些,开发者按需保存是一个合适的选择。默认生成添加新模型PO和VO类的代码。此外,可能需要其他模型的支持。Foxnic的代码生成支持额外模型的生成,支持模型之间的继承关系。示例如下:/***配置模型,为po和vo等添加额外的属性*/@OverridepublicvoidconfigModel(PoClassFilepoType,VoClassFilevoType){//3.创建一个单独的ModelPojoClassFileaddressModel=context.createPojo("地址模型");//继承自实体addressModel.setSuperType(Entity.class);//添加自定义属性addressModel.addSimpleProperty(String.class,"myProperty","CustomProperty","MyCustomProperty");//使用字段构建器构建FieldsBuilderfields=this.createFieldsBuilder();fields.addAll().removeDBTreatyFields();//添加字段构建器作为字段构建的来源addressModel.addSimpleProperties(fields);//4.定义一个子类型PojoClassFileaddressSubModel=context.createPojo("AddressSubModel");addressSubModel.setSuperTypeFile(addressModel);addressSubModel.addSimpleProperty(String.class,"postCode1","ZipCode1","ZipCode1");addressSubModel.addSimpleProperty(String.class,"postCode2","postcode2","postcode2");//5,设置定义一个没有父类的对象模型PojoClassFileaddressPureModel=context.createPojo("AddressPureModel");addressPureModel.noSuperType();fields=this.createFieldsBuilder();fields.addAll().removeDBTreatyFields();addressPureModel.addSimpleProperties(fields);}通过代码生成创建模型有很多好处,在这篇文章的概述中已经提到了,重要的要多说几遍:)总结本节主要介绍如何配置PO和Foxnic-SQL和Foxnic-Web代码生成期间的VO类型,以及如何配置自定义模型。建议您在生成模型后阅读生成的代码,以深入了解模型特性。后面我们也会安排具体的章节来讲解模型结构。相关项目https://gitee.com/LeeFJ/foxnichttps://gitee.com/LeeFJ/foxni...https://gitee.com/lank/eamhttps://gitee.com/LeeFJ/foxni。..官方文档http://foxnicweb.com/docs/doc…
