EOS Low-Code Platform 8 EOS Low-Code Platform 8
产品简介
安装部署
应用开发
专题场景实战案例
低代码(Low-Code)开发参考手册
高开开发参考手册
流程开发参考手册
AFCenter 使用指南
Governor 使用指南
FAQ
  • _1-数据库操作介绍
  • _2-简单操作
  • _2-1-查询业务数据
  • _2-1-1-查询单条记录
  • _2-1-2-查询多条记录
  • _2-2-保存业务数据
  • _2-2-1-保存单条记录
  • _2-2-2-保存多条记录
  • _2-3-删除业务数据
  • _2-3-1-删除单条记录
  • _2-3-2-删除多条记录
  • _3-复杂操作
  • _3-1-如何使用getentitybyproperty
  • _3-2-如何使用queryentitiesbyproperty
  • _3-3-如何使用queryentitiesbypropertywithpage
  • _4-命名sql
  • _3-1-如何使用querybynamedsql
  • _3-2-如何使用querybynamedsqlwithpage
  • _3-3-如何使用executebynamedsql
  • _5-使用多数据源

数据库操作

# 1 数据库操作介绍

在逻辑流中,内置了一系列数据库操作功能,以便用户能够根据不同的业务需求进行实现。这些数据库操作被封装在Java类中,通过使用运算逻辑图元的方式被调用,从而完成数据库的访问和操作。

为了保证系统的性能,特别注意不要滥用这些数据库操作API。不当的使用可能会导致系统性能的下降,甚至引发其他技术问题。

因此,在使用这些数据库操作功能时,用户应当按照推荐的方式进行合理使用,以确保系统的稳定性和高效性。

# 2 简单操作

# 2.1 查询业务数据

# 2.1.1 查询单条记录

示例一:如何使用主键查询单条业务数据?

数据库操作DatabaseDao.getEntityByKey(entityName, keyValues)适用于根据主键查询单条业务数据,参数说明如下:

参数说明:
entityName:sdo实体名称,可在实体集中复制实体名称获取;
keyValues:主键值。

1.参数定义

逻辑流属性设置中定义返回值out,数据类型为业务数据SDO实体test.img.aproject。

参数定义

2.运算逻辑配置

在运算逻辑中选择系统默认提供主键查询运算逻辑DatabaseDao.getEntityByKey(entityName, keyValues),为当前主键查询运算逻辑参数与返回值赋值,entityName值中输入复制的待查询sdo实体名称,keyValues参数值中输入字符串2。在返回值中输入定义好的逻辑流返回值out。

参数定义

参数定义

参数定义

3.执行调试

执行当前逻辑流,可以看到返回值中查询到主键值为2的业务数据。

参数定义

# 2.1.2 查询多条记录

数据库操作DatabaseDao.queryEntitiesByKey(entityName, keyValues)适用于查询多条业务数据记录,参数说明如下:

参数说明:
entityName:sdo实体名称,可在实体集中复制实体名称获取;
keyValues:主键值List集合。

示例二:如何通过主键值集合查询多条业务数据记录?

1.参数定义

逻辑流属性设置中定义输入参数param、返回值out,数据类型都为List类型。

参数定义

2.运算逻辑配置

在运算逻辑中选择系统默认提供主键查询运算逻辑DatabaseDao.queryEntitiesByKey(entityName, keyValues),为当前查询运算逻辑参数与返回值赋值,entityName值中输入待查询实体名称,keyValues参数值中输入逻辑流参数params。在返回值中输入定义好的逻辑流返回值out。

参数定义

3.执行调试

输入参数param中输入主键集合["2","21"],执行当前逻辑流,可以看到返回值中查到对应业务数据。

参数定义

# 2.2 保存业务数据

# 2.2.1 保存单条记录

数据库操作DatabaseDao.saveEntity(entityOrCollectionOrArray)适用于保存业务数据。参数说明如下:

参数说明:
entityOrCollectionOrArray: 待保存sdo实体数据,可以是实体、实体集合或者实体数组。
out:保存成功数据数量。

注意:
saveEntity()方法即可进行新增数据,又可进行修改数据,使用区别在于传入实体数据是否携带主键id值;
如果传入主键id值在数据库中存在时,会对该数据进行修改操作。
传入主键id值不存在或未传入主键id时,会新增该数据。

示例三:如何保存单条业务数据?

1.参数定义

逻辑流属性设置中定义输入参数param,数据类型为业务数据sdo实体test.img.aproject,返回值out,数据类型为Int类型。

参数定义

2.运算逻辑配置

在运算逻辑中选择系统默认提供保存运算逻辑DatabaseDao.saveEntity(entityOrCollectionOrArray),为当前保存运算逻辑参数与返回值赋值,entityOrCollectionOrArray值中输入逻辑流参数param。在返回值中输入定义好的逻辑流返回值out。

参数定义

3.执行调试

输入参数param中输入待保存数据{"name":"张三","age":"12","extend1":"测试服务保存"},执行当前逻辑流,可以看到返回值为1,即代表保存单条数据成功。

参数定义

# 2.2.2 保存多条记录

保存多条业务记录时,只需在示例三基础上,将入参param勾选数组单选框,执行调试时,输入数组对象参数即可:

[{"name":"张三","age":"12","extend1":"测试服务保存1"},{"name":"李四","age":"13","extend1":"测试服务保存2"}]

参数定义

参数定义

执行当前逻辑流后从返回结果可以看出,多条数据保存成功。

# 2.3 删除业务数据

# 2.3.1 删除单条记录

数据库操作DatabaseDao.deleteEntity(entityOrCollectionOrArray)适用于删除单条业务数据,参数说明如下:

参数说明:
entityOrCollectionOrArray:待删除sdo实体数据,可以是实体、实体集合或者实体数组。
实体中直接放入主键及对应主键值即可。例如:{"id":"1"}
out:删除成功数据数量。

示例四:如何删除单条业务数据?

1.参数定义

逻辑流属性设置中定义输入参数param,数据类型为业务数据sdo实体test.img.aproject,返回值out,数据类型为Int类型。

参数定义

2.运算逻辑配置

在运算逻辑中选择系统默认提供实体主键删除运算逻辑DatabaseDao.deleteEntity(entityOrCollectionOrArray)。 为当前删除运算逻辑参数与返回值赋值,entityOrCollectionOrArray值中输入逻辑流参数param。在返回值中输入定义好的逻辑流返回值out。

参数定义

3.执行调试

输入参数param中输入数据{"id":"89"},执行当前逻辑流,可以看到返回值为1,即代表删除单条数据成功。

参数定义

# 2.3.2 删除多条记录

删除多条业务记录时,只需在示例四基础上,将入参param勾选数组单选框,执行调试时,输入数组对象参数即可:[{"id":"90"},{"id":"91"}]。

参数定义

参数定义

执行当前逻辑流后从返回结果可以看出,删除多条数据成功。

# 3 复杂操作

# 3.1 如何使用getEntityByProperty

数据库操作DatabaseDao.getEntityByProperty(entityName, propertyNameAndValues)适用于根据SDO实体属性字段多条件查询单条业务数据,例如:根据应用表的编码和租户ID查询某条应用数据。其参数说明如下:

参数说明:
entityName:sdo实体名称,可在实体集中复制实体名称获取;
propertyNameAndValues:查询条件对象数组,例如:["code","AFCENTER","tenantId","sys_tenant"]
out:查询结果。

示例五:如何使用多条件参数查询单条数据?

1.参数定义

逻辑流属性设置中定义输入参数param,数据类型为String,勾选数组选择框,返回值out,数据类型为SDO实体类型,与待查询的业务表的SDO实体对应。

参数定义

2.查询参数赋值

使用赋值图元为查询参数param数组进行赋值。数组首位是待查询实体中属性字段,下一位是该属性对应的值,如果是多条件查询按照此方式依次进行组装数组即可。

参数定义

3.运算逻辑配置

在运算逻辑配置中选择运算逻辑DatabaseDao.getEntityByProperty(entityName, propertyNameAndValues),为当前多条件查询运算逻辑参数与返回值赋值,entityName输入待查寻实体名称常量值,propertyNameAndValues值中输入逻辑流参数param。在返回值中输入定义好的逻辑流返回值out。

参数定义

3.执行调试

执行当前逻辑流,可以看到目标数据已获取成功。

参数定义

# 3.2 如何使用queryEntitiesByProperty

数据库操作DatabaseDao.queryEntitiesByProperty(entityName, propertyNameAndValues)适用于根据SDO实体属性字段多条件查询多条业务数据,例如:根据应用表的租户ID查询该租户下所有应用数据。其参数说明如下:

参数说明:
entityName:sdo实体名称,可在实体集中复制实体名称获取;
propertyNameAndValues:查询条件对象数组,例如:["tenantId","sys_tenant"]
out:查询结果集合,可用List类型数据接收。

示例六:如何使用多条件参数查询多条数据?

1.参数定义

逻辑流属性设置中定义输入参数param,数据类型为String,勾选数组选择框,返回值out,数据类型为List类型。

参数定义

2.查询参数赋值

使用赋值图元为查询参数param数组进行赋值。数组首位是待查询实体中属性字段,下一位是该属性对应的值,如果是多条件查询按照此方式依次进行组装数组即可。

参数定义

3.运算逻辑配置

在运算逻辑配置中选择运算逻辑DatabaseDao.queryEntitiesByProperty(entityName, propertyNameAndValues),为当前多条件查询运算逻辑参数与返回值赋值,entityName输入待查寻实体名称常量值,propertyNameAndValues值中输入逻辑流参数param。在返回值中输入定义好的逻辑流返回值out。

参数定义

3.执行调试

执行当前逻辑流,通过断点调试结果可以看到目标数据已获取成功。

参数定义

# 3.3 如何使用queryEntitiesByPropertyWithPage

数据库操作DatabaseDao.queryEntitiesByPropertyWithPage(pageIndex, pageSize, entityName, propertyNameAndValues)适用于根据SDO实体属性字段多条件分页查询业务数据,例如:根据应用表的租户ID分页查询该租户下所有应用数据。其参数说明如下:

参数说明:
pageIndex:页码索引;
pageSize:每页大小;
entityName:sdo实体名称,可在实体集中复制实体名称获取;
propertyNameAndValues:查询条件对象数组,例如:["tenantId","sys_tenant"]
out:查询结果集合,可用PageResultList类型接收。

示例七:如何使用多条件参数分页查询数据?

1.参数定义

逻辑流属性设置中定义输入参数param,数据类型为String,勾选数组选择框,返回值out,数据类型为PageResultList类型。

参数定义

2.查询参数赋值

使用赋值图元为查询参数param数组进行赋值。数组首位是待查询实体中属性字段,下一位是该属性对应的值,如果是多条件查询按照此方式依次进行组装数组即可。

参数定义

3.运算逻辑配置

在运算逻辑配置中选择运算逻辑DatabaseDao.queryEntitiesByPropertyWithPage(pageIndex, pageSize, entityName, propertyNameAndValues),为当前多条件查询运算逻辑参数与返回值赋值,pageIndex输入常量值0,pageSize输入常量值10,entityName输入待查寻实体名称常量值,propertyNameAndValues值中输入逻辑流参数param。在返回值中输入定义好的逻辑流返回值out。

参数定义

3.执行调试

执行当前逻辑流,通过断点调试结果可以看到目标数据已获取成功。

参数定义

# 4 命名SQL

# 3.1 如何使用queryByNamedSql

数据库操作DatabaseDao.queryByNamedSql(nameSqlId, parameterObject)适用于使用命名SQL查询所有数据,参数说明如下:

nameSqlId:	命名SQL的唯一标识,可在命名SQL列表一键复制;
parameterObject:数据类型为Object,命名SQL语句绑定的变量(可以是SDO,或者是一个HashMap,或者是个基本类型的值)
out:符合查询条件的所有结果。

示例八:如何使用queryByNamedSql查询数据?

1.场景描述

执行命名SQL,动态传入查询参数查询符合条件的业务表所有数据。

2.参数定义

逻辑流属性设置中定义输入参数param,数据类型为SDO实体test.img.aproject,返回值out,数据类型为List类型。

注意:
这里param要作为输入参数动态传参至命名SQL语句中,参数类型要与命名SQL中parameterClass值保持一致。

参数定义

参数定义

3.运算逻辑配置

在运算逻辑配置中选择运算逻辑DatabaseDao.queryByNamedSql(nameSqlId, parameterObject),为当前命名SQL语句查询运算逻辑参数与返回值赋值,nameSqlId输入待查询命名SQL的唯一标识常量值,parameterObject值中输入逻辑流参数param。在返回值中输入定义好的逻辑流返回值out。

参数定义

4.执行调试

执行当前逻辑流,可以看到目标数据已获取成功。

参数定义

# 3.2 如何使用queryByNamedSqlWithPage

数据库操作DatabaseDao.queryByNamedSqlWithPage(nameSqlId, parameterObject, pageIndex, pageSize)适用于使用命名SQL分页查询数据,参数说明如下:

nameSqlId:	命名SQL的唯一标识,可在命名SQL列表一键复制;
parameterObject:数据类型为Object,命名SQL语句绑定的变量(可以是SDO,或者是一个HashMap,或者是个基本类型的值)
pageIndex:页码索引;
pageSize:每页大小;
out:符合查询条件的所有结果,数据类型为PageResultList。

示例九:如何使用queryByNamedSqlWithPage分页查询数据?

1.场景描述

执行命名SQL,动态传入查询参数分页查询符合条件的业务表数据。

2.参数定义

逻辑流属性设置中定义输入参数param,数据类型为SDO实体test.img.aproject,返回值out,数据类型为PageResultList类型。

注意:
这里param要作为输入参数动态传参至命名SQL语句中,参数类型要与命名SQL中parameterClass值保持一致。

参数定义

参数定义

3.运算逻辑配置

在运算逻辑配置中选择运算逻辑DatabaseDao.queryByNamedSqlWithPage(nameSqlId, parameterObject, pageIndex, pageSize),为当前命名SQL语句查询运算逻辑参数与返回值赋值,nameSqlId输入待查询命名SQL的唯一标识常量值,parameterObject值中输入逻辑流参数param。pageIndex输入常量0,pageSize输入常量5,在返回值中输入定义好的逻辑流返回值out。

参数定义

4.执行调试

参数param中输入{"name":"张三"},执行当前逻辑流,通过断点调试可以看到目标数据已获取成功。

参数定义

参数定义

# 3.3 如何使用executeByNamedSql

数据库操作DatabaseDao.executeByNamedSql(nameSqlId, parameterObject)适用于执行命名SQL语句,例如新增、修改、删除业务数据,参数说明如下:

nameSqlId:	命名SQL的唯一标识,可在命名SQL列表一键复制;
parameterObject:数据类型为Object,命名SQL语句绑定的变量(可以是SDO,或者是一个HashMap,或者是个基本类型的值)
out:执行命名SQL返回结果,返回值为1表示执行成功,为0表示执行失败。

示例十:如何使用executeByNamedSql执行命名SQL?

1.场景描述

执行insert命名SQL,动态传入实体参数插入一条数据至业务表。

2.参数定义

逻辑流属性设置中定义输入参数param,数据类型为SDO实体test.img.aproject,返回值out,数据类型为Int类型。

注意:
这里param要作为输入参数动态传参至命名SQL语句中,参数类型要与命名SQL中parameterClass值保持一致。

参数定义

参数定义

3.运算逻辑配置

在运算逻辑配置中选择运算逻辑DatabaseDao.executeByNamedSql(nameSqlId, parameterObject),为当前命名SQL执行运算逻辑的参数与返回值赋值,nameSqlId输入待查询命名SQL的唯一标识常量值,parameterObject值中输入逻辑流参数param,在返回值中输入定义好的逻辑流返回值out。

参数定义

4.执行调试

参数param中输入{"id":"12","name":"王五","age":"16","extend1":"执行插入命名SQL"},执行当前逻辑流,可以看到返回值out为1,表示命名SQL执行成功。

参数定义

# 5 使用多数据源

EOS应用服务内支持多数据源,逻辑流内对多数据源实体进行数据库操作之前,需要首先进行实体数据源配置。

示例十一:如何对多数据源实体进行查询操作?

1.配置实体数据源

在当前应用管理配置-实体数据源配置中,选择待查询实体的数据源名称'eos8lj',包含的实体名称中输入SDO实体名称test.eos8lj.projectLj。

参数定义

说明:
包含与排除的实体名称输入规则:
① 多个实体名称用逗号分割;
② 实体名称必须是entityName;
③ 支持名称使用通配符 ‘*’;  
示例:com.primeton.das.eosDictEntry.,com.primeton.das.criteria.;

多数据源实体未配置实体数据源时,默认使用为default数据源;

2.图元选择

服务中默认提供常用增删改查多数据源操作图元,选择查询实体图元,编排逻辑流,进行条件查询多数据源实体的数据查询。查询实体中使用到运算逻辑DatabaseDao.queryEntitiesByTemplate(template),参数说明如下:

template:	待查询多数据源sdo实体,对象属性参数值为空时查询全部;
out:符合查询条件的所有结果,数据类型为List。

参数定义

3.参数定义

逻辑流属性设置中定义输入参数param,数据类型为sdo实体test.eos8lj.projectLj,返回值out,数据类型为List类型。

参数定义

4.运算逻辑配置

在运算逻辑配置中为当前运算逻辑的参数与返回值赋值,template输入逻辑流定义输入参数param,在返回值中输入定义好的逻辑流返回值out。

参数定义

5.执行调试

执行当前逻辑流,从返回结果可以看出,查询出数据源'eos8lj'中sdo实体test.eos8lj.projectLj的全部数据。

参数定义

← 循环 调用远程服务 →