# 实体

实体是数据的一种载体,允许您将结构化数据持久保存在数据库中并实现数据库模型。每一个实体对应一张数据库表,实体的属性对应数据库表的列。例如我们可以将“订单”定义为一个实体,每个订单都有订单号、日期、客户信息等等属性。

本章介绍CodeWave平台里的实体的相关内容。

# 实体的创建

实体的创建分为以下四种方式:

  • 通过低代码 IDE 创建
  • 从数据源导入
  • 从 SQL 文件导入
  • 从 Excel 文件导入

# 通过低代码 IDE 创建

可通过以下步骤从低代码 IDE 创建一个新的实体。

  1. 打开数据模块

  2. 右键点击数据源或实体文件夹,或者点击实体文件夹右侧的三个纵点。

    添加实体

  3. 点击添加实体

  4. 填写合法的实体名。

# 从数据源导入

可以通过以下步骤将现有数据库中的表格,反向导入到低代码平台中,生成对应的实体:

  1. 打开数据模块

  2. 右键点击数据源或实体文件夹,或者点击实体文件夹右侧的三个纵点。

  3. 点击从数据源导入

  4. 在弹出窗口中选择导入环境(开发环境或生产环境),单击下一步。

  5. 选择需要导入的表,并编辑“生成实体的名称”,完成编辑后,单击下一步。

    数据源导入 1

    可以勾选表名左侧的框来一键选取当前页面的所有表。

  6. 编辑、更改要导入的表的每个属性的属性类型(通常不需要更改),点击导入。

    数据源导入 2

  7. 导入后自动创建对应的实体。

在上面第 6 步中,属性类型是低代码平台中的类型。我们要指定数据库中的类型如何映射到低代码平台中的类型,这通常是自动的,无需修改。一些列类型会以相同的属性类型承接,如数据库中的 integerlongbigint(20) 都以 Long 长整数 来承接。

从数据源导入的的实体带有反向导入实体的标识

# 从 SQL 文件导入

可通过以下步骤从数据源导入实体。

  1. 打开数据模块

  2. 右键点击数据源或实体文件夹,或者点击实体文件夹右侧的三个纵点。

  3. 选择从 SQL 文件导入

  4. 选择 SQL 类型,平台支持 MySQL、Oracle、达梦、Db2 类型的 SQL。

    SQL 导入

  5. 选择 SQL 文件并确定导入。

  6. 导入后自动创建对应的实体。

# 从 Excel 文件导入

可以通过以下步骤将 Excel 文件中的表格信息导入到低代码平台中,生成对应的实体。

  1. 打开数据模块

  2. 右键点击数据源或实体文件夹,或者点击实体文件夹右侧的三个纵点。

  3. 单击从 Excel 文件导入

  4. 阅读 Excel 文件导入相关限制说明,单击继续导入。

    Excel 导入 1

  5. 在弹出框中选择对应的 Excel 文件,单击打开。

  6. 在弹出框中选择对应的 Sheet 页,并编辑生成实体的名称,编辑完成后,单击下一步。

  7. 系统会自动解析相关列的数据类型,若解析有误,请修改相关列的数据类型,检视无误后,单击导入。

    Excel 导入 2

  8. 导入后自动创建对应的实体。

# 实体基本信息

双击一个实体来打开实体编辑页面,可以编辑实体的名称、描述、数据库表名、系统属性。

实体基本信息

  • 实体的名称以大写字母开头,后跟至多 62 个英文字母、数字、下划线(_)的组合。

  • 实体的描述可填写任意字符,但须控制在 63 个以内。

  • 数据库表名以大写字母开头,后跟至多 62 个英文字母、数字。不可以使用下划线。

  • 系统属性可勾选

    • 存储 createdTime(数据的创建时间)。
    • 存储 createdBy(数据的创建者)。
    • 存储 updatedTime(数据的更新时间)。
    • 存储 updatedBy(数据的更新者)。

    如果被勾选,则平台在数据的创建、更新时会自动存储对应的信息。默认为全部勾选。

# 实体属性

双击一个实体来打开实体编辑页面,可以看到页面下半部有属性、索引两个大分类。本小节介绍实体属性。

实体属性 1

# 属性分类

属性分为系统属性(平台自动托管)和用户自定义属性。

# 系统属性

系统属性包含

  • id:数据的主键信息,作为每条数据的唯一标识,默认为 Long 长整数 类型,可配置主键生成规则。
  • createdTime:数据的创建时间,默认为 DateTime 日期时间 类型。
  • createdBy:数据的创建者,默认为 String 字符串 类型。
  • updatedTime:数据的更新时间,默认为 DateTime 日期时间 类型。
  • updatedBy:数据的更新者,默认为 String 字符串 类型。

系统属性的数据类型、默认值等基本信息目前无法修改。

# 主键生成规则

主键生成规则可从如下两种中选择

  • 自动生成-雪花算法。

    1. 将传统的64位雪花算法生成ID缩短至16位

    2. 41位时间戳可使用69年(2^41/356/24/60/60/1000)

    3. 5位数据中心,可以支持部署32个节点

    4. 8位顺序,每毫秒生成256个ID

  • 自动生成-数据库自增。

# 自定义属性

系统属性以外的属性是用户自定义属性,被用来记录真实的业务数据等。

  • 添加属性:点击属性下方偏左的“带框加号”按钮来添加自定义属性。

  • 删除属性:选中一个属性后,可点击属性下方的垃圾箱按钮来删除该属性。为保证数据完整性,实际数据库中仍保留该属性以及数据。

实体属性 2

每一个自定义属性有名称、标题、数据类型、是否必填、默认值、显示在表格、显示在筛选、显示在表单、显示在详情、关联属性这些可配置项目。

# 自定义属性的配置项

# 名称

属性的名称,以写字母开头,后跟至多 31 个英文字母、数字、下划线(_)的组合。

# 标题

配置后,在界面中如需显示该属性,会优先显示对应的标题。可使用中文等任意字符,但不得超过 63 个字符。

# 数据类型

需要为自定义属性指定数据类型:

  • 可从平台提供的基础类型、集合类型,以及用户自定义的枚举类型、数据结构类型、实体类型中做选择。
  • 暂不支持联合类型(union)。

实体发布后,允许变更的数据类型会有限制:只能从容纳范围较小的类型改到容纳范围较大的类型,如 String 类型的字段,只能更改为 Text 长文本类型。

# 数据类型的细节配置

部分数据类型具有额外配置:

  • IntegerLongDouble 类型可配置最小值、最大值。
  • Decimal 类型可配置最小值、最大值、小数位数。
  • StringText 类型可配置最小长度、最大长度。

配置后,在拖拽实体生成的表单中,平台会对用户的输入做校验。

配置后,在实体生成的数据库表格中,平台会根据这些值来自动优化数据库的存储细节(如占用空间)。

# 是否必填

“是否必填”复选框打勾时表示必填,未打勾时表示非必填。

复选框打勾时,拖拽实体生成的表单会自动校验此属性被用户填写。

# 默认值

影响向数据库提交数据时的行为。

考虑一个属性 Prop,对于一次数据提交,如果提交的数据不包含该属性(即Prop),

  • 若用户设置了默认值,则平台会将用户设置的默认值作为该次提交中该属性(即Prop)的值。
  • 若用户没有设置默认值,则该次提交中该属性(即Prop)的值为 null

支持为数据类型为 BooleanIntegerLongDoubleDecimalStringText 的属性设置其对应格式的默认值。不支持为联合类型(union 类型)设置默认值。

设置默认值时,需注意以下规则:

  • StringText 类型的默认值不填时是 null,填写后再用删除键(delete 键)删除是空字符串(文本)""。用 IDE 提供的删除按钮删除后,还原为 null
  • IntegerLongDoubleDecimal 类型的默认值不填时是 null。与上述 StringText 类型不同的是,用户填写后再用删除键(delete 键)删除是还是 null。用 IDE 提供的删除按钮删除后也是 null

# 显示设置

可配置显示在表格、显示在筛选、显示在表单、显示在详情四个复选框。

  • 显示在表格:复选框打勾时,拖拽实体生成的表格含有该属性(作为一列)。
  • 显示在筛选:复选框打勾时,拖拽实体生成的筛选项含有该属性。
  • 显示在表单:复选框打勾时,拖拽实体生成的表单含有该属性(依据其类型作为输入框、下拉单等输入组件)。
  • 显示在详情:复选框打勾时,拖拽实体生成的详情项目含有该属性。

拖拽实体 1 拖拽实体2

# 拖拽实体生成页面组件

操作如下:

  1. 打开一个页面。
  2. 将“流程、页面、逻辑、数据”面板切换到“数据”。
  3. 左键点击一个实体,拖拽该实体到页面上,松开鼠标。
  4. 从弹框中选择需要生成的组件,目前支持
    1. 列表(全),
    2. 列表(简),
    3. 数据网格(全),
    4. 数据网格(简),
    5. 详情,
    6. 创建,
    7. 修改,
    8. 选择框,
    9. 列表(双击编辑)。

# 关联属性

一个表中的属性可以与另一个表中的属性相关联,它用来实现更加复杂的查询、删除等数据操作,并确保两个表之间的数据一致性和完整性。

  • 关联属性只可选择其他实体属性中的主键或关联属性。
  • 选择关联属性后,可选择关联实体属性记录删除规则:
    • 不允许删除:在删除关联实体中的记录之前,必须先将与之相关联的其他实体中的记录删除。这种设置通常用于保护数据的完整性和一致性,避免因误操作或者意外删除导致数据不一致或者丢失。
    • 允许删除且同时删除本实体记录:如果删除了关联实体中的记录,那么本实体中与之关联的记录也会被自动删除。这种设置通常用于建立父子表之间的关系,例如在删除父表中的记录时,所有与之相关的子表中的记录都将被自动删除。

image-20230518134705312

# 数据库列名

实体属性在数据库表中被存储为列,因此有列名。该列名目前与实体属性的名称相同,且不可修改。

# 实体的索引

显示属性在数据库中对应表的索引信息。系统自动为主键建立索引,不可修改。

# 实体逻辑

# 实体逻辑表

创建实体后,平台自动会生成一系列实体逻辑,可供调用。生成的逻辑表单如下:

逻辑名称 参数说明 功能说明
get id:long类型,指定数据主键 获取指定数据主键的一条数据
create body:实体类型,指定新增数据内容 根据body参数内容新增一条数据
update body:实体类型,指定更新数据内容 根据body参数内容更新一条数据
delete id:long类型,指定数据主键 删除指定数据主键的一条数据
createOrUpdate body:实体类型,需指定id且不为空 判断id是否已存在:
若id已存在,则更新body对应数据
若id不存在,则新增body对应数据
updateBy body:实体类型,指定更新数据内容
filter:筛选条件,支持对实体字段进行条件筛选,可选逻辑运算、比较运算、数据筛选、原子项、算术运算,其中最外层不能为算数运算和原子项
根据筛选条件遴选符合条件的数据,并根据body参数内容进行更新
deleteBy filter:筛选条件,支持对实体字段进行条件筛选,可选逻辑运算、比较运算、数据筛选、原子项、算术运算,其中最外层不能为算数运算和原子项 根据筛选条件遴选符合条件的数据并删除
batchCreate body:List<实体>类型,指定批量新增数据内容 根据body参数内容批量新增多条数据
batchUpdate body:List<实体>类型,指定批量更新数据内容 根据body参数内容批量更新多条数据
batchDelete body:List<实体>类型,指定批量删除数据内容 根据body参数内容批量删除多条数据
import - 通过excel表格导入数据,仅支持在文件上传组件中作为上传地址字段使用

# 操作路径

  1. 全局逻辑里拖拽调用逻辑组件。
  2. 调用逻辑组件里展开实体,会看到对应方法。
  3. 选择合适的方法并填充参数。

# 注意事项

# import

  • import逻辑仅支持在文件上传组件中作为上传地址字段使用,且仅支持上传excel文件,如下图所示表示将excel表格中的数据上传到product实体。

    image-20230220110115874

  • 导入的excel列表头必须要和实体属性对应,若导入的excel中列表头没有和实体属性中的名称或标题对应上,则导入结果会被忽略。

    image-20230220111516786

    image-20230220111915176

  • 若excel中传入的某个字段类型与实体中字段类型不匹配,上传后可能会导致解析报错,例如实体中字段a为int类型,excel中传入的字段a中的值为string类型,可能会存在解析异常。

# 实体关系图

数据库中的实体关系图是一种图形化表示数据库中实体、属性和实体之间关系的工具。它显示了数据库中的所有表以及它们之间的关系,包括主键、外键和关系类型。实体关系图可以帮助用户更好地理解数据库结构,从而帮助设计和维护数据库。

有关联的实体之间往往会存在对应关系,包括

  • 一对一关系:一个实体实例只能与另一个实体实例相关联,而另一个实体实例也只能与一个实体实例相关联。
    • 例如一个人只能有一个身份证号码,一个身份证号码也只能对应一个人。
  • 一对多(多对一)关系:一个实体实例可以与多个另一个实体实例相关联,但另一个实体实例只能与一个实体实例相关联。
    • 例如一个订单可以有多个商品,但一个商品只能属于一个订单。
  • 多对多关系:一个实体实例可以与多个另一个实体实例相关联,而另一个实体实例也可以与多个实体实例相关联
    • 例如一个学生可以选修多门课程,一门课程也可以被多个学生选修。

# 查看实体关系图

点击数据下的实体关系图来查看实体关系图。

查看实体关系图

实体关系图示例:

实体关系图

上次更新: 2023年06月14日