当前位置: 首页 > news >正文

蓝凌EKP产品:属性转换器系统优化

EKP 中的 ModelToForm和FormToModel是页面Form对象和实例Model对象的重要转换环节,传统方式需逐个手动设置属性映射,复杂而繁琐。EKP提供一套机制,自动将页面填写Form对象映射为实例Model对象,然后就能拿Model对象和数据库进行交互。顾名思义FormToModel转换就是将页面对象页面填写的Form对象转换为实例Model对象,FormToModel是将数据库实例对象转换为Form对象。在转换的过程中,有简单对象和复杂对象,比如String,Integer 直接可以映射,但是对于集合,引用对象,就需要写转换器,在EKP里面内置了很多转换器。

toFormPropertyMap = new ModelToFormPropertyMap();toFormPropertyMap.putAll(super.getToFormPropertyMap());toFormPropertyMap.addNoConvertProperty("checkTemplates");// 类别
//			toFormPropertyMap.put("docCategory.fdName", "fdCategoryName");
//			toFormPropertyMap.put("docCategory.fdId", "fdCategoryId");toFormPropertyMap.put("docCategory",new ModelConvertor_ObjectToString("fdId:fdName","fdCategoryId:fdCategoryName", SysCategoryMain.class));// 相关岗位toFormPropertyMap.put("fdPosts",new ModelConvertor_CollectionToString("fdPostIds:fdPostNames", "fdId:fdName", SysOrgElement.class));// 相关属性toFormPropertyMap.put("docProperties",new ModelConvertor_CollectionToString("docPropertyIds:docPropertyNames", "fdId:fdName", SysCategoryProperty.class));// 流程标签可阅读者toFormPropertyMap.put("fdLabelReaders",new ModelConvertor_CollectionToString("fdLabelReaderIds:fdLabelReaderNames","fdId:deptLevelNames", SysOrgElement.class));// 可反馈者toFormPropertyMap.put("fdFeedback",new ModelConvertor_CollectionToString("fdFeedBackIds:fdFeedbackNames", "fdId:deptLevelNames", SysOrgElement.class));// 关键字toFormPropertyMap.put("docKeyword",new ModelConvertor_CollectionToString("fdKeywordIds:fdKeywordNames", "fdId:docKeyword", KmReviewTemplateKeyword.class));// 模板创建者
//			toFormPropertyMap.put("docCreator.fdName", "docCreatorName");
//			toFormPropertyMap.put("docCreator.fdId", "docCreatorId");toFormPropertyMap.put("docCreator",new ModelConvertor_ObjectToString("fdId:fdName","docCreatorId:docCreatorName", SysOrgPerson.class));// 创建时间toFormPropertyMap.put("docCreateTime", new ModelConvertor_Common("docCreateTime").setDateTimeType(DateUtil.TYPE_DATETIME));// 模板修改者toFormPropertyMap.put("docAlteror.fdName", "docAlterorName");// 修改时间toFormPropertyMap.put("docAlterTime", new ModelConvertor_Common("docAlterTime").setDateTimeType(DateUtil.TYPE_DATETIME));

                                                                常用的转换案例

传统的转换器ModelConvertor_ModelListToString在集合中使用比较多,这一次针对V17针对集合转换器特别做了相关优化,引入 ModelConvertor_ObjectToString 和ModelConvertor_CollectionToString,支持批量属性聚合转换,极大地提升了效率。

一、使用优势

  • 批量转换多个属性,一行代码胜多行
  • 支持字典、对象属性、集合属性统一转换
  • 替换原有繁杂的 Common / ListToString 方案

二、使用示例

1. 对象属性转换

toFormPropertyMap.put("docCreator",
new ModelConvertor_ObjectToString("fdId:fdName", "docCreatorId:docCreatorName", SysOrgperson.class));

等价于传统两行写法:

toFormPropertyMap.put("docCreator.fdId", "docCreatorId");
toFormPropertyMap.put("docCreator.fdName", "docCreatorName");

2. 集合属性转换

toFormPropertyMap.put("authReaders",
new ModelConvertor_CollectionToString("fdId:fdName", "authReaderIds:authReaderNames", SysOrgElement.class));

三、使用注意

  • 每个转换器源属性、目标属性数量必须一致,否则抛出异常
  • 同一类型属性建议统一使用一种转换器,避免混用
  • 若使用 Hibernate 表继承(table per subclass),还需配置 JSON 数据字典的 inheritColumn 与 tableJoinKey

通过以上优化,表单属性转换更加统一清晰,也让开发工作大幅减负。

http://www.dtcms.com/a/271168.html

相关文章:

  • c语言学习_函数递归2
  • 70、【OS】【Nuttx】【构建】配置 stm32 工程
  • STM32继电器万能控制设备
  • 【04】MFC入门到精通——MFC 自己手动新添加对话框模板 并 创建对话框类
  • SpringBoot集成文件 - 大文件的上传(异步,分片,断点续传和秒传)
  • 数据结构基础准备:包装类 泛型 泛型的上界 密封类
  • 零知开源——STM32F407VET6驱动SHT41温湿度传感器完整教程
  • 2023年全国青少年信息素养大赛Python编程小学组复赛真题+答案解析-北京赛区
  • idea 常用快捷键
  • Mysql中的日志-undo/redo/binlog详解
  • 学习open62541 --- [79] 在docker中运行open62541工程
  • pytorch chunk 切块
  • 【C++】容器适配器 + stack/queue/deque详解
  • Java基础,反射破坏封装性 - 单例模式的崩塌
  • 掌握PDF转CAD技巧,提升工程设计效率
  • 第四节 chatPDF
  • 机器视觉之工业相机讲解
  • unity animtor播放动画的指定位置
  • spring boot使用mybatis-plus实现分页功能
  • C++学习笔记三
  • MATLAB基于voronoi生成三维圆柱形
  • Token 和 Embedding的关系
  • 基于AOP+Redis的简易滑动窗口限流
  • C#基础篇(10)集合类之列表
  • 列表页智能解析算法:大规模数据采集的核心引擎
  • 2024-2025-2 山东大学《编译原理与技术》期末(回忆版)
  • 【ARM嵌入式汇编基础】- 操作系统基础(二)
  • JSP数据交互
  • php绘图添加水印,文字使用imagick库的操作
  • Docker 高级管理-容器通信技术与数据持久化