# 查询管理

# 概述

查询管理功能提供了一个查询配置页面,用户在页面中配置需要的查询结果和查询条件后,系统将根据配置自动生成SQL,并通过统一接口执行SQL,返回查询结果。
此功能用于实现页面动态建模中各种查询需求,如分页查询列表页、下拉框、穿梭树。同时也可以作为打印管理功能的数据来源。

【菜单路径:】系统配置化平台 -> 元数据 -> 元数据管理 -> 点击一个应用 -> 页面建模 ->查询管理

# 查询

可根据查询管理名称、编码、分类查询。查询结果按排序号正序排序,创建时间倒序,id倒序排序。

# 新增

点击表格上方新增按钮,将弹出新增查询管理弹窗,填写查询管理的基本信息后,点击下一步。根据配置类型的选择,将跳转到不同的弹窗页面,分别是脚本片段配置查询

字段名 字段说明
编码 必填,全局唯一,最大长度为75,只允许字母、数字以及下划线
名称 必填, 最大长度为37
分类 必填,打印设计:只有打印管理功能可以使用
页面建模:只有页面建模功能可以使用
配置类型 必填,配置查询/脚本片段。详细介绍见下方描述
排序 排序号
备注 备注,最大长度为500个字符

# 配置查询

用户无需编写查询SQL,只需在页面进行相关配置,后台将根据配置自动组装SQL,查询出用户想要的数据。配置查询包括以下几个部分:实体查询字段配置条件配置关联关系配置排序配置分组配置预览SQL查询结果扩展

# 实体

实体部分用于选择查询SQL中所有的表,其他部分只能选择此处配置的表中的字段。点击上方新增实体按钮,弹出选择实体弹窗,弹窗中显示了当前系统中配置的所有元数据,可根据所属模块等条件筛选。


提示

新增实体的弹窗只显示已同步的元数据实体。

选择需要的表后,点击保存,所选表将回显到实体列表中,给每个实体填写别名,并选择一个主表。

# 查询字段配置

查询字段用于配置SQL中SELECT的部分。点击表格上方新增字段按钮,即可添加一行空白数据。各属性含义见下表:

字段名 字段说明
类型 必填,表字段:查询的字段来自所选的实体表
计算字段:包含函数的字段
所属表 类型为表字段时必填,选择字段的所属表
字段名称 必填,表字段:选择所属表中的一个字段
计算字段:直接填写字段名称
字段表编码 必填,表字段:显示字段的表编码,不可修改
计算字段:填写字段编码,如count(id)
别名 必填,填写字段的别名

# 条件配置

条件配置用于填写SQL中WHERE后的条件语句。点击表格上方新增字段按钮,即可添加一行空白数据。各属性含义见下表:

字段名 字段说明
逻辑符 两个条件间的连接符,选择AND/OR
左括号 条件前可能有的左括号,允许填写多个
类型 除数据权限外必填,表字段:查询的字段来自所选的实体表
计算字段:包含函数的字段
所属表 类型为表字段时必填,选择字段的所属表
字段名称 除数据权限外必填,表字段:选择所属表中的一个字段
计算字段:直接填写字段名称
字段表编码 除数据权限外必填,表字段:显示字段的表编码,不可修改
计算字段:填写字段编码,如count(id)
操作符 除数据权限外必填,字段和值之间的操作符,选择下拉选项中的一个
值类型 必填,详细介绍见值类型和值
必填,填写操作符右边的值,详细介绍见值类型和值
空值规则 必填,详细介绍见空值规则
右括号 条件后可能有的右括号,允许填写多个
# 值类型和值

不同值类型允许填写的值内容不同,具体如下:

  • 参数:指值是动态参数,值填写的是占位符,例如填写为name,则后台会自动标识为#{params.name}。在系统执行sql时,占位符会被替换为传入的动态参数name
  • 常量:指值是一个常量,例如查询条件是tp.is_deleted = 1。则值应当填写1
  • 系统参数:指系统可以自动读取的动态参数,执行SQL时不需要用户传入,比如当前登录号的ID。下拉选项中列出了可选项。
  • 其他表字段:指关联其他表的字段。例如查询条件是tp.id = tpu.person_id,则值应当填写tpu.person_id
  • 数据权限:若查询需要用到数据权限,则需要在此添加数据权限占位符。和基础平台中的数据权限功能配合使用
# 空值规则

配置处理入参为NULL或者空字符串时的处理方式

  • 空值不返回数据:若入参为NULL或者空字符串时,此条件固定返回false。实现方式为将条件替换为1 = 2
  • 空值返回所有数据:若入参为NULL或者空字符串时,此条件固定返回true。实现方式为将条件替换为1 = 1
# 快速新增

若已有SQL语句,可使用快速新增功能快速添加条件配置。点击快速新增按钮,在弹窗中填入和示例格式一致的SQL语句,点击保存。 系统将对SQL进行解析,并将解析出的配置填写到条件配置列表中。同时,在弹窗中点击右键,可快速添加系统参数占位符。


提示

快速新增时,填写的SQL语句中的表编码、别名、字段名都必须是实体列表中包含的数据,否则将解析失败。

# 数据权限占位

点击数据权限占位按钮,可快速添加一条数据权限数据。

# 关联关系配置

关联关系配置用于填写SQL中主表和子表的关联关系。点击表格上方新增子表按钮,即可添加一行空白数据:

点击数据右侧操作列中的加号,可给当前子表添加一条关联关系数据:

字段名 字段说明
子表 必填,选择一个子表
关联关系 必填,选择当前子表和主表的关联关系
逻辑符 两个条件间的连接符,选择AND/OR
左括号 条件前可能有的左括号,允许填写多个
字段名称 必填,选择当前子表中的一个字段
字段表编码 自动显示字段名称中选中的字段的编码
操作符 必填,字段和值之间的操作符,选择下拉选项中的一个
值类型 必填,详细介绍见值类型和值
必填,填写操作符右边的值,详细介绍见值类型和值
空值规则 必填,详细介绍见空值规则
右括号 条件后可能有的右括号,允许填写多个

# 排序配置

排序配置用于配置SQL语句中ORDER BY后的语句,决定查询结果的排序规则。点击表格上方新增按钮可新增一条空数据。

字段名 字段说明
表名称 必填,选择一个表
字段名称 必填,选择选中的表中的一个字段
字段表编码 自动显示字段名称中选中的字段的编码
排序类型 必填,升序/降序

# 分组配置

分组配置包含分组字段限定条件两个配置。

# 分组字段

用于配置SQL语句中GROUP BY后的语句。点击表格上方新增按钮可新增一条空数据。

字段名 字段说明
所属表 必填,选择一个表
字段名称 必填,选择当前表中的一个字段
字段表编码 自动显示字段名称中选中的字段的编码
# 限定条件

用于配置SQL语句中HAVING后的语句。点击表格上方新增按钮可新增一条空数据。

字段名 字段说明
逻辑符 两个条件间的连接符,选择AND/OR
左括号 条件前可能有的左括号,允许填写多个
类型 除数据权限外必填,表字段:查询的字段来自所选的实体表
计算字段:包含函数的字段
所属表 类型为表字段时必填,选择字段的所属表
字段名称 除数据权限外必填,表字段:选择所属表中的一个字段
计算字段:直接填写字段名称
字段表编码 除数据权限外必填,表字段:显示字段的表编码,不可修改
计算字段:填写字段编码,如count(id)
操作符 除数据权限外必填,字段和值之间的操作符,选择下拉选项中的一个
值类型 必填,详细介绍见值类型和值
必填,填写操作符右边的值,详细介绍见值类型和值
空值规则 必填,详细介绍见空值规则
右括号 条件后可能有的右括号,允许填写多个

# 预览SQL

在所有内容配置完成后,可点击预览SQL按钮,查看系统根据配置生成的SQL。

# 查询结果扩展

若配置的SQL语句查询出的结果,无法满足需求,还可以在查询结果扩展中填写JS代码,对查询结果做进一步处理。


提示

必须打开是否开启扩展开关,扩展处理才能生效。

JS代码示例:


//方法名固定为extend,入参records为执行sql后的返回结果,类型为List<Map<String,Object>>
function extend(records) {
  var iterator = records.iterator();
  while (iterator.hasNext()) {
 	var elementMap = iterator.next();
elementMap.put('name', '张三');
  }
  return records;
}

# 脚本片段

脚本片段允许用户直接填写SQL语句。需要配置的内容包括:实体脚本配置查询字段配置条件配置查询结果扩展

# 脚本片段-实体

和配置查询中的实体配置方式一致。详情见配置查询-实体

# 脚本片段-脚本配置

在脚本配置TAB页签中填写查询SQL:

# 脚本片段-查询字段配置

将SQL中查询的字段配置在此TAB页签中。配置内容和配置查询中一致,详情见配置查询-查询字段配置

# 脚本片段-条件配置

将SQL条件中,值类型为参数的条件配置在此TAB页签中即可。
例如,上图SQL中包含的条件为page_id = ${params.pageId},则条件配置中应当添加下图所示的数据,编码填写pageId,名称填写所属页面id。

# 脚本片段-无实体(不选择实体)

# 脚本片段-脚本配置

在脚本配置TAB页签中填写查询SQL:

# 脚本片段-查询字段配置

将SQL中查询的字段配置在此TAB页签中,类型选择表字段,名称可以自定义,别名与SQL中保持一致。

# 脚本片段-条件配置

将SQL条件中,值类型为参数的条件配置在此TAB页签中即可。
例如,上图SQL中包含的条件为page_id = ${params.pageId},则条件配置中应当添加下图所示的数据,编码填写pageId,名称填写所属页面id。

# 脚本片段-查询结果扩展

配置方式和配置查询中一致,详情见配置查询-查询结果扩展

# 复制新增

若用户需要新增的数据和旧数据相差不大,可使用复制新增功能。点击需要复制的数据右侧复制新增按钮,输入新的编码名称及其他内容,点击保存,即可复制成功。

# 编辑

点击数据右侧编辑按钮,弹出修改弹窗,修改信息后点击保存即可。

# 删除

  • 单个删除:点击需要删除的数据右侧的删除按钮
  • 批量删除:勾选需要删除的数据,点击表格上方的删除按钮

# 查询管理执行接口

查询配置完成后,可调用以下接口执行SQL,获取查询结果:

  • url
- POST http://{host}:{port}/api/metadata/query-manage/executeSql
  • 入参格式

{
  "id": "26d8c28a1329cc22fbd49dbd70bb9a2d", //查询管理id
  "paramMap": { //查询SQL需要的入参放到此Map中
    "pageId": "8ea79f7e250912b61fa76e0f05f7d946"
  },
  "queryPageInfo": { //分页信息
    "enable": false, //是否需要分页
    "current": 1, //当前页码
    "size": 10 //每页记录数
  }
}

  • 出参格式
{
    "code": "200",
    "msg": "操作成功",
    "data": {
        "records": [ //返回数据
            {
                "code": "dhyw",
                "address": "",
                "id": "67b40a69c00d112346b45cd2d99f142d"
            }
        ],
        "total": 0, //分页相关信息,若入参选择不分页,忽略这些信息即可
        "size": 10,
        "current": 1,
        "pages": 0
    },
    "success": true
}