2.5.5 跨数据库查询

一个模块关联一个数据库,关联查询同一模块中的其他表,是数据库内的访问,可以使用sql的关联查询实现。

对于跨模块和跨应用(租户内)的关联查询,往往是不同的数据库,甚至有可能是不同类型的数据库。针对微服务系统中这种跨库关联查询的需求,系统提供了跨数据库访问能力,支持跨不同类型的数据库的关联查询。实现原理是向两个不同的数据库单独发送sql查询,将sql查询结果在java代码中进行组合,作为整个关联查询的结果返回。

“2.2.5 数据集类型”一节中讲到的关联引用,“2.5.3 关联查询”和“2.5.4 嵌套数据查询”两节中讲到的使用关联引用和数据集的输出数据集,都是使用的跨数据库查询的方式实现的,所以既支持不跨数据库查询,也支持跨数据库查询。因此在使用上面的功能时,不需要考虑是否跨库。只要在配置中选择其他模块和其他应用的数据集,就可以关联查询。

1. 访问其他模块的数据集

注:应用默认是main模块,要开启其他新模块需要从架构和高级菜单中进行配置。

一个模块中的数据集,要在其他模块中能访问,需要在模块的config目录下的export.json文件中声明。文件目录结构如下:

model
    service
        store
            config
                export.json
            dict.data.m
  • 其中store是模块名
  • dict.data.m是数据集模型文件名

export.json文件内容如下:

    [
        {
            "path":"store/dict.data.m",
            "editData":true,
            "editLabel":false
        }
    ]

在export.json文件中声明的数据集,就可以在其他模块中访问了。如下图所示,关联配置中可以选择到其他模块的数据集。

2. 访问租户内其他应用的数据集

系统支持在同一租户内调用其他应用的服务和数据,在当前应用中配置使用租户内其他应用的数据集,如下图所示:

1659679791041

1659679855231

配置后,系统将被调用应用的service目录及目录下的文件全部复制到当前应用的model目录下,被调用应用的service目录的名称改为service-服务名。在service.used.json文件中声明当前应用使用的数据和服务。目录结构如下:

model
    service
    service-entry
        service.used.json

service.used.json的内容如下:

{
    "data": [
        {
            "path": "misc/dict.data.m"
        }
    ],
    "service": []
}

配置后,就可以访问该数据集了。如下图所示,关联配置中可以选择到其他应用的数据集。

results matching ""

    No results matching ""

    results matching ""

      No results matching ""