2.5.3 关联查询
数据库提供join,用于多个数据表之间的关联查询。动态数据集可以用下面的方式使用数据库提供的join
- 如果多个数据集在同一个数据库中,可以使用数据集的关联查询
- 如果多个数据集在同一种类型的数据库中,可以使用sql数据集,通过写sql实现关联查询
- 如果多个数据集在不同类型的数据库中,不能通过数据库的方式实现关联查询
在《2.2.3 数据集关系》一节中介绍的关联引用,开发者只需在页面上添加输入框组件,即可实现下拉选择和/或弹出选择。还可以将设置的关联引用直接作为关联查询的依据,实现关联查询。
注意区分这种关联查询和数据库提供的join,这种关联查询是用java代码实现的,没有使用数据库的能力,仅作为查询使用,支持跨库查询,相当于数据库提供的left join,不支持数据库提供的inner join、right join、outer join等能力。
例如:在学生数据集的民族列上设置关联引用,如下图所示:
在数据集参数中,可以将在民族列上定义的关联引用,作为输出数据集,如下图所示:
对学生数据集的查询,可以得到学生数据集自身的列和输出数据集中的列,在数据集属性编辑的数据列中勾选需要返回的列,如下图所示:
查询结果如下图所示:
如果来源选择的服务,服务地址的格式如下:
service://{serviceName}/main/api或者service:/main/api 调用当前应用请求/main/api,需要注意不写{serviceName}时:后是一个/
http(s)://www.baidu.com/main/api 调用外部api
service://oa/main/api 跨应用调用请求API,oa是应用的服务名
service://{serviceGateway}/oa/main/api 通过服务网关(过门户)跨应用调用请求API,oa是应用的服务名,
service://oa@tenanta/main/api 跨租户调用请求 (调用的服务必须是做过服务注册的),oa是应用的服务名,tenanta是租户code
如下调用当前服务的api请求: