输出数据集

输出数据集有两种用途,一种是获取嵌套数据,如下图所示,orderd 是其中的嵌套数据

1721700674601

另一种是实现关联查询,如下图所示,orderd_xxx 是关联查询得到的数据

  • 这种关联查询不是数据库的 join,是使用 Java 实现的,因此可以实现任意情况的关联查询,包括跨不同数据库类型的关联查询
  • 如果关联查询得到多条数据,只会返回其中一条数据

1721700710218

输出数据集中的数据是使用 Java 代码查询,然后按照字段映射,和主数据集的数据合并,因此输出数据集的数据不仅可以来自于数据库,也可以来自于服务。

用途

获取嵌套数据

DBRest 支持主从数据的单独分别获取,也支持形成 JSON 嵌套数据一起返回。例如:有如下图所示的两条主表数据,以及对应的三条从表数据。

嵌套返回查询结果如下:

    [
        {
            "recordCount": 2
        },
        {
            "fid": "6",
            "orderNo": "20220034",
            "totalMoney": "30000.00",
            "detail": [
                {
                    "fid": "C9D1B67D2EA0000154181BC01A591711",
                    "product": "办公桌",
                    "num": 6,
                    "orderID": "6"
                },
                {
                    "fid": "C9D1B68259500001C8D59A156AD6F150",
                    "product": "办公椅",
                    "num": 6,
                    "orderID": "6"
                }
            ],
            "orderDate": "2022-05-16"
        },
        {
            "fid": "7",
            "orderNo": "20220044",
            "totalMoney": "45000.00",
            "detail": [
                {
                    "fid": "C9D1B687AF700001C4DF11AF10E51C6C",
                    "product": "笔记本",
                    "num": 3,
                    "orderID": "7"
                }
            ],
            "orderDate": "2022-05-11"
        }
    ]

添加输出数据集

在主数据集的数据集参数中,添加“:输出数据集”,设置界面如下图所示

1721639890436

在来源中选择数据集

  • 名称:代码使用,支持英文和数字
  • 显示名:设计界面使用,支持中文
  • 数据集:选择从数据集
  • 过滤:对数据集设置过滤条件
  • 排序:对数据集设置排序
  • 嵌套数据:是否作为嵌套数据使用。选中表示嵌套数据修改后会更新数据表;不选中表示只用于查询
  • 字段映射:设置从数据集和主数据集的关联列关系

1721640097440

选择输出数据集

主数据集设置输出数据集后,主数据集的数据列中就包括了输出数据集和输出数据集的各个列,如下图所示,此时需要注意

  • 要获取嵌套数据,选择输出数据集 $orderd(),如果不需要获取 orderd 中的所有列,可以通过选择列设置,但是外键列必须选择
  • 要获取关联查询数据,选择输出数据列 $orderd.fid、$orderd.categoryId 等

1721701212216

  • 数据列中都不选中,表示查询数据集的全部列,但是不包括输出数据集
  • 数据列中如果有选中,表示只查询选中列,因此除了选择输出数据集或输出数据列,还必须选择主数据集的列,例如主键、版本(如果有)都是必选的列

1721701252703

经过上面的配置,调用主数据集数据组件的刷新方法 refreshData 时,返回嵌套数据,如下图所示

1721702323925

还可以使用表格组件展示嵌套数据,参考《子数据集

使用接口查询数据

除了通过数据组件的刷新方法,还可以调用 DBRest 查询数据接口,获取输出数据集中的全部列,url 如下:

    域名/微服务名/main/dbrest/saleOrder?limit=20&offset=0&select=fid,orderNo,totalMoney,$detail(),orderDate

获取输出数据集中的部分列,url 如下:

    域名/微服务名/main/dbrest/saleOrder?limit=20&offset=0&select=fid,orderNo,totalMoney,$detail(product,num,orderID),orderDate

关联查询

添加输出数据集

关联查询和嵌套数据的后端设置完全相同,区别只在于前端数据组件数据列的设置

选择输出数据列

关联查询和嵌套数据的后端设置完全相同,区别只在于前端数据组件数据列的设置

  • 要获取关联查询数据,选择输出数据列 $orderd.productId、$orderd.num等,如下图所示
  • 要获取嵌套数据,选择输出数据集 $orderd(),如果不需要获取 orderd 中的所有列,可以通过选择列设置,但是外键列必须选择

1721713934588

  • 数据列中都不选中,表示查询数据集的全部列,但是不包括输出数据集
  • 数据列中如果有选中,表示只查询选中列,因此除了选择输出数据集或输出数据列,还必须选择主数据集的列,例如主键、版本(如果有)都是必选的列

1721701252703

经过上面的配置,调用主数据集数据组件的刷新方法 refreshData 时,返回关联查询数据,如下图所示

1721714113299

数据来源

输出数据集的数据来源分为三种

  • 关联引用:使用关联引用中设置的数据集、过滤条件查询数据,通过映射关系整合数据
  • 数据集:使用设置的数据集和过滤条件查询数据,通过映射关系整合数据
  • 服务:调用一个服务获取数据,通过映射关系整合数据

关联引用

在关联引用中设置的内容。不仅可以用于在页面上展示,还可以用作关联查询,无需再次设置。

下面介绍使用关联引用实现关联查询的方法

后端设置

在学生数据集的民族列上设置关联引用,如下图所示:

1659679677930

1659679649014

在数据集参数中,将在民族列上定义的关联引用,作为输出数据集,如下图所示:

前端设置

对学生数据集的查询,可以得到学生数据集自身的列和输出数据集中的列,在数据组件的数据列中勾选需要返回的列,如下图所示:

1659491781132

查询结果如下图所示:

使用数据集

关联查询的数据可以来自数据集,参考前面《用途》里面的两个案例

服务

关联查询的数据也可以来自服务,根据服务的位置,服务地址有不同的写法,见下表

调用服务 服务地址 说明
调用当前应用的服务 service:/main/api
调用其他应用的服务 service://{serviceName}/main/api serviceName 是服务名,例如:调用应用 oa 的服务,
服务地址为:service://oa/main/api
跨租户调用服务 service://{serviceGateway}/oa/main/api serviceGateway 是服务网关,通过服务网关调用的服务必须是做过服务注册的,
例如:调用 tenanta 租户的 oa 应用的服务,服务地址为:service://oa@tenanta/main/api
调用外部 API http(s)://www.baidu.com/main/api

调用当前应用的服务,配置如下图所示

数据集来源

关联引用和数据集里面都可以选择数据集,这个数据集可以来自其它模块或其它应用,具体做法参考《跨模块跨应用访问数据集

results matching ""

    No results matching ""