PHP笔记网

革命尚未成功,同志仍须努力下载JDK17

作者:Albert.Wen  添加时间:2023-10-03 10:39:56  修改时间:2024-11-23 09:39:39  分类:02.低代码/Mendix  编辑

通过实践网友的文章

  1. 第4章 低代码新手入门系列,西门子Mendix领域模型和数据存储
  2. 第14章 低代码新手入门系列,西门子Mendix OQL语法
  3. 第15章 低代码新手入门系列,西门子Mendix OQL语法实战

在本地搭建了 Mendix模块:UserManager,实现了数据表记录的增、删、改、查、分页查询等。但是发现“查询功能”太单一,只能对单个表进行查询。在实际的项目中,多表关联查询是常见的事。实践步骤如下:

1.安装以下第三方模块:

  1. Community Commons:模块向您的应用程序添加了许多可重用的 Java 方法,这些方法可以从微流或自定义 Java 操作中调用。该模块还添加了处理日期、批次、字符串、互联网、文件和配置的功能。
  2. OQL:该模块允许您从微流执行OQL查询。用于测试和导出OQL查询的代码片段,用动作添加参数,执行查询返回实体,执行查询并返回CSV等。

第三方模块,被安装在“Marketplace modules”文件夹下:

附:Mendix 9.24.2 安装模块OQL时报错:The selected 'Atlas_UI_Resource_PopupLayout' no longer exists.

2.通过"微流+OQL"实现联表分页查询功能

2.1 新建 无需持久化“业务模型类”:ShiftBO

ShiftBO继承系统分页类System.Paging,这样,ShiftBO又可以作为表单查询的表单类

2.2 新建专用来“分页查询演示”的文件夹“SQL_PageList

2.3 添加分页列表页面:Shift_PageList

生成了一个空白的页面

2.4 拖动表格控件至页面:Data Grid

2.5 通过“微流”配置数据源:Shift_Microflow

(1) 给微流定义一个入参:Paging

(2) 定义一个SQL查询字符串变量:SQL

拖动一个 动作活动

双击,弹框,选择:Create variable

SELECT 
    S.ShiftId ShiftId, S.StartTime StartTime, S.EndTime EndTime,
    D.DepartmentId DepartmentId, D.Name DepartmentName,
    E.EmployeeId EmployeeId, E.Title EmployeeName
FROM UserManager.Shift S
LEFT JOIN S/UserManager.Shift_Department/UserManager.Department D
LEFT JOIN S/UserManager.Shift_Employee/UserManager.Employee E
WHERE E/ID != NULL
ORDER BY S.ShiftId ASC

(3) 定义查询变量,即根据“部门名”查询记录

if $Paging/DepartmentName != empty and $Paging/DepartmentName != '' then
	 $SQL+ 'AND D.Name=' + replaceAll('''###''', '###', $Paging/DepartmentName)
else
	$SQL

(4) 同理,根据“员工名”查询记录

if $Paging/EmployeeName != empty and $Paging/EmployeeName!= '' then
	$SQL+ 'AND E.Title=' + replaceAll('''###''', '###', $Paging/EmployeeName)
else
	$SQL

(5) 执行前面的SQL变量,查询数据库

(6) 打印SQL日志

(7) 修改“终点事件”,让微流返回 数据集

2.6 给表格(data grid)配置数据源

 

 

选择datagrid的头部搜索栏,在右边的连接器“Connector”中,拖地查询字段到对应空栏位中:

 

 


 

后期优化:查询数据表的微流