最新笔记链接:https://app.yinxiang.com/fx/42f42d74-4ca9-4d0a-8eb0-84abd1b7f92d
<property name="fd_from"column="fd_from"update="true"insert="true"not-null="false"length="200"type="java.lang.String" />
<propertyname="fd_receiving_way"column="fd_receiving_way"update="true"insert="true"not-null="false"length="200"type="java.lang.String" /><many-to-onename="fd_internal_dept"column="fd_internal_dept"insert="true"update="true"not-null="false"class="com.landray.kmss.sys.organization.model.SysOrgElement"foreign-key="none" /><bagname="fd_response_user"table="ekporg_response_user_220726"lazy="true"><key column="fd_parent_id" foreign-key="none" /><many-to-manyclass="com.landray.kmss.sys.organization.model.SysOrgPerson"column="sys_org_person_id"foreign-key="none" />
</bag>

提示:

① 引用many-to-one、bag标签属性时,一律加上modelName/entityName,例如:
ekp_model_18233f00c5d5199cb5d9a5340fda0772.fd_internal_dept
ekp_model_18233f00c5d5199cb5d9a5340fda0772.fd_response_user
modelName/entityName 可通过super.getModelName()获取
②  判断某部门/机构时,勿使用fdName(例子中使用fdName只是为了方便演示),实际中使用fdId
1、查询
select - 全部
List rtnList = new ArrayList<>();
HQLInfo hql = new HQLInfo();
try {rtnList = super.findList(hql);
} catch (Exception e) {e.printStackTrace();
}
return rtnList;// List<HashMap>
--------------------------------------------------------------
//  使用封装好的方法
try {Map record = findByFdId("18253f694f73d4c787791e142eea3b11");
} catch (Exception e) {e.printStackTrace();
}
select property 标签
List rtnList = new ArrayList<>();
HQLInfo hql = new HQLInfo();
hql.setSelectBlock("fd_from");
try {rtnList = super.findList(hql);
} catch (Exception e) {e.printStackTrace();
}
return rtnList;// List<String>
-------------------------------------------------------------------------------------------
List rtnList = new ArrayList<>();
HQLInfo hql = new HQLInfo();
hql.setSelectBlock("fd_from, fd_receiving_way");
try {rtnList = super.findList(hql);
} catch (Exception e) {e.printStackTrace();
}
return rtnList;// List<Object[]>
select - many-to-one 标签

List rtnList = new ArrayList<>();
HQLInfo hql = new HQLInfo();
hql.setSelectBlock("fd_internal_dept.fdName");
try {rtnList = super.findList(hql);
} catch (Exception e) {e.printStackTrace();
}
return rtnList;// List<String>
问题1:select语句对fd_internal_dept的引用格式需和where语句引用格式保持一致(两种语句都存在的时候)
即当where语句引用了fd_internal_dept的属性作为条件,则select语句中也必须引用fd_internal_dept的属性,而不能直接将整个fd_internal_dept拿出来
List rtnList = new ArrayList<>();
HQLInfo hql = new HQLInfo();
hql.setSelectBlock("fd_internal_dept.fdName, fd_internal_dept.fdId, fd_internal_dept.fdHierarchyId");
hql.setWhereBlock("fd_internal_dept.fdName = :internalDeptName");
hql.setParameter("internalDeptName", "信息部");
try {rtnList = super.findList(hql);System.out.println(rtnList.size());
} catch (Exception e) {e.printStackTrace();
}
return rtnList;// List<Object[]>
解决1:使用格式 modelName.columnName.propertyName
hql.setSelectBlock("fd_from, ekp_model_18233f00c5d5199cb5d9a5340fda0772.fd_internal_dept");// ekp_model_18233f00c5d5199cb5d9a5340fda0772是对应的modelName -super.getModelName()
hql.setWhereBlock("ekp_model_18233f00c5d5199cb5d9a5340fda0772.fd_internal_dept.fdName = :internalDeptName");
hql.setParameter("internalDeptName", "信息部");hql.setSelectBlock("fd_from, ekp_model_18233f00c5d5199cb5d9a5340fda0772.fd_internal_dept.fdName");// ekp_model_18233f00c5d5199cb5d9a5340fda0772是对应的modelName -super.getModelName()
hql.setWhereBlock("ekp_model_18233f00c5d5199cb5d9a5340fda0772.fd_internal_dept.fdName = :internalDeptName");
hql.setParameter("internalDeptName", "信息部");

select - bag标签
hql.setSelectBlock(super.getModelName() + ".fd_internal_user.fdName, fd_from");
hql.setWhereBlock(super.getModelName() + ".fd_internal_user.fdName = :a");
hql.setParameter("a", "何小平");
------------------------------------------------------------------------------
hql.setSelectBlock(super.getModelName() + ".fd_internal_user.fdName, fd_from");
hql.setWhereBlock(super.getModelName() + ".fd_internal_user.fdName = :a");
hql.setParameter("a", "何小平");
where - property
List rtnList = new ArrayList<>();
HQLInfo hql = new HQLInfo();
hql.setWhereBlock("fd_from= :from AND fd_receiving_way = :receivingWay");
hql.setParameter("from", "来自内部");
hql.setParameter("receivingWay", "电话");
try {rtnList = super.findList(hql);
} catch (Exception e) {e.printStackTrace();
}
return rtnList;// List<HashMap>
where - many-to-one标签
List rtnList = new ArrayList<>();
HQLInfo hql = new HQLInfo();
hql.setWhereBlock("fd_internal_dept.fdName = :internalDeptName");
hql.setParameter("internalDeptName", "信息部");
try {rtnList = super.findList(hql);
} catch (Exception e) {e.printStackTrace();
}
return rtnList;// List<HashMap>
where - bag标签
要想引用bag标签的fd_internal_user的某个属性(例如fdName),前面必须加上modelName
hql.setSelectBlock(super.getModelName() + ".fd_internal_user.fdName, fd_from");
hql.setWhereBlock(super.getModelName() + ".fd_internal_user.fdName = :a");
hql.setParameter("a", "何小平");
------------------------------------------------------------------------------
hql.setSelectBlock(super.getModelName() + ".fd_internal_user, fd_from");
hql.setWhereBlock(super.getModelName() + ".fd_internal_user.fdName = :a");
hql.setParameter("a", "何小平");
join
String thisModelName =super.getModelName();
List rtnList = new ArrayList<>();
HQLInfo hql = new HQLInfo();
hql.setSelectBlock("ekp_production_line_manager.fd_line_type_text," + thisModelName + ".fd_from");
hql.setJoinBlock("LEFT JOIN ekp_model_17fd48c5d115b6cdb8cff124f229c931 ekp_production_line_manager ON " +"ekp_production_line_manager.fd_line_type_text = "+ thisModelName +".fd_from");
try {rtnList = super.findList(hql);
} catch (Exception e) {e.printStackTrace();
}
return rtnList;// List<Object[]>
2、更新
String thisModelName = super.getModelName();
HQLInfo hql = new HQLInfo();
hql.setWhereBlock("fdId = :fdId");
hql.setParameter("fdId", "1823e4a2907ff724349c70740ab93b88");
try {HashMap map = (HashMap)super.findFirstOne(hql);if (map != null) {map.put("fd_receiving_way", map.get("fd_receiving_way") + "_update");super.update(map);}
} catch (Exception e) {e.printStackTrace();
}
3、新增
Map<String, Object> addRecord = new HashMap<>();
addRecord.put("fdId", IDGenerator.generateID());
// property
addRecord.put("fd_from", "来自内部_add");
// manyToOne
SysOrgElement org = new SysOrgElement();
org.setFdId("17d765923e7117bab06ab4c447b97790");
addRecord.put("fd_internal_org", org);
SysOrgElement dept = new SysOrgElement();
dept.setFdId("17d76592911f68664c9a59849de8f774");
addRecord.put("fd_internal_dept", dept);
// property
addRecord.put("fd_receiving_way", "微信_add");
addRecord.put("fd_proposed_time", DateUtil.convertStringToDate("1997-01-01"));
addRecord.put("fd_response_category", "标签_add");
addRecord.put("fd_detail", "详细说明111213123_add");
addRecord.put("fd_response_measures", "响应措施112321443_add");
addRecord.put("fd_is_database", "N");
addRecord.put("fd_response_time", DateUtil.convertStringToDate("1997-01-01"));
addRecord.put("fd_is_documents", "N");
addRecord.put("fd_is_instructions", "N");
// bag
SysOrgElement internalUser1 = new SysOrgElement();
SysOrgElement internalUser2 = new SysOrgElement();
internalUser1.setFdId("17d765adef50beb6c47d3d344e6a7847");
internalUser2.setFdId("17d765ae21bfcfff7669c95409780e5a");
addRecord.put("fd_internal_user", Arrays.asList(internalUser1, internalUser2));
// property
addRecord.put("fd_subject", "subject13124213_add");
try {super.add(addRecord);
} catch (Exception e) {e.printStackTrace();
}
4、删除
① 根据主键删除
HashMap<String, Object> deleteRecord = new HashMap<>();
deleteRecord.put("fdId", "18253deb3feeb1b144b89014e5383f5b");
try {super.delete(deleteRecord);
} catch (Exception e) {e.printStackTrace();
}
--------------------------------------------------------------
//  使用封装好的方法
try {super.deleteByFdId("18253f694f73d4c787791e142eea3b11");
} catch (Exception e) {e.printStackTrace();
}
② select出对象后删除
List<HashMap> rtnList = new ArrayList<>();
HQLInfo hql = new HQLInfo();
hql.setWhereBlock("fd_from = :from");
hql.setParameter("from", "来自内部_add1");
try {rtnList = super.findList(hql);super.delete(rtnList.get(0));
} catch (Exception e) {e.printStackTrace();
}
5、注意事项
1)只select一个字段的时候,千万不要用findFirstOne方法,因为该方法在只有一条记录时会返回数据的数据类型,只有两条记录以上时才会返回List
2)bag字段和其它字段不能放一起进行select,例如
hql.setSelectBlock(super.getModelName() + ".fd_internal_user, fd_from"); 会报错,因为设置select之后,拿出来的是一个Object[],里面的元素需要是同种数据类型
hql.setSelectBlock(super.getModelName() + ".fd_internal_user.fdName, fd_from"); 则不会报错
3)注意,action层无法直接调用dao层(蓝凌不允许)
所以所有操作都保持 action → service → dao的调用结构

EKP后端/开发/常用开发 - 低代码/表单映射CRUD - 2基础操作(public)相关推荐

  1. 浅论前后端分离模式:低代码强势推动开发效率提升

    编者按:本文介绍前后端分离,以及低代码如何采用前后端分离等先进技术为软件开发赋能提效,提高用户开发体验. 如何理解分离前后端? 前后端分离,其实就是将一个单体应用拆分成两个独立的应用,只通过简单的AP ...

  2. 全网开源快速开发平台,低代码平台,企业级开发平台,开源系统,私活平台,学习平台,毕设平台,企业级应用开发平台资源整理

    个人比较喜欢开源技术,经常在开源社区寻找一些优质的开源项目. 这是一个巨人的时代,唯有站在巨人的肩膀,与巨人同行,我们才能够走的更快. 现在技术迭代升级速度比较快,大学上学时,热火朝天的还在宣扬SSM ...

  3. 开发工具与低代码开发平台丨上海道宁联合Grapecity为您提供各类软件开发工具和服务

    Grapecity 提供软件开发技术和低代码平台 通过各类软件开发工具和服务 提升开发效率 推动软件产业发展 葡萄城研发各类开发控件和 商业智能报表工具 提供控件技术和数据分析工具 基于专业控件的技术 ...

  4. 低代码开发平台_低代码开发平台系列:6、低代码是编程技术发展大势所趋

    一.低代码是一种编程技术低代码是快速开发工具/技术的一种,属于软件开发/编程工具/技术领域,主要应用于企业软件开发领域.借助低代码工具,使用者无需编码即可实现企业软件系统常见功能的交付:少量编码扩展更 ...

  5. discuz二次开发常用技术手册代码

    Discuz开发资料库:https://www.moqu8.com/library/index.htm 登录 <a href="member.php?mod=logging&a ...

  6. 嵌入式软件开发常用的编辑代码工具、比较工具和测试工具的使用说明和操作步骤

    嵌入式软件开发常用的编辑代码工具有: Eclipse Eclipse是一款开源的集成开发环境,支持多种编程语言和插件,适用于多种嵌入式开发平台.以下是Eclipse的使用说明和操作步骤: 步骤1:创建 ...

  7. 前端网页开发常用兼容css代码

    前端网页开发常用兼容css代码 /* 去除常见标签默认的 margin 和 padding */ body, h1, h2, h3, h4, h5, h6, p, ul, ol, li, dl, dt ...

  8. 视频教程-Web前端开发利器 SPRY框架之表单验证-JavaScript

    Web前端开发利器 SPRY框架之表单验证 有17年互联网行业从业经验,始终在教学第一线,勇于创新,从有效教学,不断向高效教学转变.始终坚持"学生为主体,教师为主导:商业化案例,企业化情境& ...

  9. 响应式web开发网页案例 ——29款表单模板

    如果你正在寻找有趣的响应式web开发网页案例,那你找对地方了.本文与大家分享一下,点击图片即可下载. 1. [网页响应式开发]粉红简洁登录框表单模板 大小:124 KB 下载地址:http://www ...

最新文章

  1. installshield 2009实现安装包自动编译
  2. linux消息信号丢失,Linux信号丢失问题分析
  3. 【收藏】GeoMesa整体架构模块介绍、创建Schema并导入数据
  4. 英文简历的几种常见形式
  5. vue——vuex mapState,mapGetters,mapMutations,mapActions
  6. 计算机二级资料汇总,包含多个题库
  7. linux中cron表达式指南
  8. Android Binder机制介绍
  9. MySQL学习---作业(1)
  10. 二进制转三进制 C语言版
  11. CSS实现立体字的效果
  12. 抽象数据类型三元组Triplet基本操作与实现 严蔚敏版
  13. windows10升级windows11后微信等软件无法连接网络
  14. qma7981 源码 驱动_高品质PCB板配单报价,QMA7981-TR
  15. 迅为i.MX6ULL终结者Linux中断实验运行测试
  16. qscoj 11 喵哈哈村的括号序列
  17. 岩藻糖基化硫酸软骨素(Fucosylated Chondroitin Sulfate)
  18. java中@Repeatable的理解
  19. 学前端没这些工具怎么行
  20. html霓虹灯效果图,如何使用css3+html5来制作文字霓虹灯效果(付完整代码)

热门文章

  1. 无线视频、音频传输模块的驱动编程(RC5808)
  2. Android系统定制-SystemUI-控制下拉状态栏快捷设置的下拉与关闭(通过按键控制)
  3. MetInfo标签函数及参数
  4. oracle怎么查询关键字,Oracle 中的SELECT 关键字(查询、检索)
  5. 高压MOS管1000V/2A 可代替IXFP4N100 数据表(PDF)
  6. IBM Notes 9.0.1FP10版本发布新的补丁程序IF5
  7. 供应商管理软件有哪些特点和优势?
  8. ransac 直线拟合 matlab,ransac拟合直线和平面(matlab版本)
  9. allowTransparency属性
  10. 微分方程模型的求解方法