# 实体
实体是数据的一种载体,允许您将结构化数据持久保存在数据库中并实现数据库模型。每一个实体对应一张数据库表,实体的属性对应数据库表的列。例如我们可以将“订单”定义为一个实体,每个订单都有订单号、日期、客户信息等等属性。
本章介绍CodeWave平台里的实体的相关内容。
# 实体的创建
实体的创建分为以下四种方式:
- 通过低代码 IDE 创建
- 从数据源导入
- 从 SQL 文件导入
- 从 Excel 文件导入
# 通过低代码 IDE 创建
可通过以下步骤从低代码 IDE 创建一个新的实体。
打开数据模块。
右键点击数据源或实体文件夹,或者点击实体文件夹右侧的三个纵点。
点击添加实体。
填写合法的实体名。
# 从数据源导入
可以通过以下步骤将现有数据库中的表格,反向导入到低代码平台中,生成对应的实体:
打开数据模块。
右键点击数据源或实体文件夹,或者点击实体文件夹右侧的三个纵点。
点击从数据源导入。
在弹出窗口中选择导入环境(开发环境或生产环境),单击下一步。
选择需要导入的表,并编辑“生成实体的名称”,完成编辑后,单击下一步。
可以勾选表名左侧的框来一键选取当前页面的所有表。
编辑、更改要导入的表的每个属性的属性类型(通常不需要更改),点击导入。
导入后自动创建对应的实体。
在上面第 6 步中,属性类型是低代码平台中的类型。我们要指定数据库中的类型如何映射到低代码平台中的类型,这通常是自动的,无需修改。一些列类型会以相同的属性类型承接,如数据库中的 integer
、long
、bigint(20)
都以 Long 长整数
来承接。
从数据源导入的的实体带有反向导入实体的标识。
# 从 SQL 文件导入
可通过以下步骤从数据源导入实体。
打开数据模块。
右键点击数据源或实体文件夹,或者点击实体文件夹右侧的三个纵点。
选择从 SQL 文件导入。
选择 SQL 类型,平台支持 MySQL、Oracle、达梦、Db2 类型的 SQL。
选择 SQL 文件并确定导入。
导入后自动创建对应的实体。
# 从 Excel 文件导入
可以通过以下步骤将 Excel 文件中的表格信息导入到低代码平台中,生成对应的实体。
打开数据模块。
右键点击数据源或实体文件夹,或者点击实体文件夹右侧的三个纵点。
单击从 Excel 文件导入。
阅读 Excel 文件导入相关限制说明,单击继续导入。
在弹出框中选择对应的 Excel 文件,单击打开。
在弹出框中选择对应的 Sheet 页,并编辑生成实体的名称,编辑完成后,单击下一步。
系统会自动解析相关列的数据类型,若解析有误,请修改相关列的数据类型,检视无误后,单击导入。
导入后自动创建对应的实体。
# 实体基本信息
双击一个实体来打开实体编辑页面,可以编辑实体的名称、描述、数据库表名、系统属性。
实体的名称以大写字母开头,后跟至多 62 个英文字母、数字、下划线(
_
)的组合。实体的描述可填写任意字符,但须控制在 63 个以内。
数据库表名以大写字母开头,后跟至多 62 个英文字母、数字。不可以使用下划线。
系统属性可勾选
- 存储 createdTime(数据的创建时间)。
- 存储 createdBy(数据的创建者)。
- 存储 updatedTime(数据的更新时间)。
- 存储 updatedBy(数据的更新者)。
如果被勾选,则平台在数据的创建、更新时会自动存储对应的信息。默认为全部勾选。
# 实体属性
双击一个实体来打开实体编辑页面,可以看到页面下半部有属性、索引两个大分类。本小节介绍实体属性。
# 属性分类
属性分为系统属性(平台自动托管)和用户自定义属性。
# 系统属性
系统属性包含
- id:数据的主键信息,作为每条数据的唯一标识,默认为
Long 长整数
类型,可配置主键生成规则。 - createdTime:数据的创建时间,默认为
DateTime 日期时间
类型。 - createdBy:数据的创建者,默认为
String 字符串
类型。 - updatedTime:数据的更新时间,默认为
DateTime 日期时间
类型。 - updatedBy:数据的更新者,默认为
String 字符串
类型。
系统属性的数据类型、默认值等基本信息目前无法修改。
# 主键生成规则
主键生成规则可从如下两种中选择
自动生成-雪花算法。
将传统的64位雪花算法生成ID缩短至16位
41位时间戳可使用69年(2^41/356/24/60/60/1000)
5位数据中心,可以支持部署32个节点
8位顺序,每毫秒生成256个ID
自动生成-数据库自增。
# 自定义属性
系统属性以外的属性是用户自定义属性,被用来记录真实的业务数据等。
添加属性:点击属性下方偏左的“带框加号”按钮来添加自定义属性。
删除属性:选中一个属性后,可点击属性下方的垃圾箱按钮来删除该属性。为保证数据完整性,实际数据库中仍保留该属性以及数据。
每一个自定义属性有名称、标题、数据类型、是否必填、默认值、显示在表格、显示在筛选、显示在表单、显示在详情、关联属性这些可配置项目。
# 自定义属性的配置项
# 名称
属性的名称,以小写字母开头,后跟至多 31 个英文字母、数字、下划线(_
)的组合。
# 标题
配置后,在界面中如需显示该属性,会优先显示对应的标题。可使用中文等任意字符,但不得超过 63 个字符。
# 数据类型
需要为自定义属性指定数据类型:
- 可从平台提供的基础类型、集合类型,以及用户自定义的枚举类型、数据结构类型、实体类型中做选择。
- 暂不支持联合类型(union)。
实体发布后,允许变更的数据类型会有限制:只能从容纳范围较小的类型改到容纳范围较大的类型,如 String
类型的字段,只能更改为 Text
长文本类型。
# 数据类型的细节配置
部分数据类型具有额外配置:
Integer
、Long
、Double
类型可配置最小值、最大值。Decimal
类型可配置最小值、最大值、小数位数。String
、Text
类型可配置最小长度、最大长度。
配置后,在拖拽实体生成的表单中,平台会对用户的输入做校验。
配置后,在实体生成的数据库表格中,平台会根据这些值来自动优化数据库的存储细节(如占用空间)。
# 是否必填
“是否必填”复选框打勾时表示必填,未打勾时表示非必填。
复选框打勾时,拖拽实体生成的表单会自动校验此属性被用户填写。
# 默认值
影响向数据库提交数据时的行为。
考虑一个属性 Prop
,对于一次数据提交,如果提交的数据不包含该属性(即Prop
),
- 若用户设置了默认值,则平台会将用户设置的默认值作为该次提交中该属性(即
Prop
)的值。 - 若用户没有设置默认值,则该次提交中该属性(即
Prop
)的值为null
。
支持为数据类型为 Boolean
、Integer
、Long
、Double
、Decimal
、String
、 Text
的属性设置其对应格式的默认值。不支持为联合类型(union 类型)设置默认值。
设置默认值时,需注意以下规则:
String
、Text
类型的默认值不填时是null
,填写后再用删除键(delete 键)删除是空字符串(文本)""
。用 IDE 提供的删除按钮删除后,还原为null
。Integer
、Long
、Double
、Decimal
类型的默认值不填时是null
。与上述String
、Text
类型不同的是,用户填写后再用删除键(delete 键)删除是还是null
。用 IDE 提供的删除按钮删除后也是null
。
# 显示设置
可配置显示在表格、显示在筛选、显示在表单、显示在详情四个复选框。
- 显示在表格:复选框打勾时,拖拽实体生成的表格含有该属性(作为一列)。
- 显示在筛选:复选框打勾时,拖拽实体生成的筛选项含有该属性。
- 显示在表单:复选框打勾时,拖拽实体生成的表单含有该属性(依据其类型作为输入框、下拉单等输入组件)。
- 显示在详情:复选框打勾时,拖拽实体生成的详情项目含有该属性。
# 拖拽实体生成页面组件
操作如下:
- 打开一个页面。
- 将“流程、页面、逻辑、数据”面板切换到“数据”。
- 左键点击一个实体,拖拽该实体到页面上,松开鼠标。
- 从弹框中选择需要生成的组件,目前支持
- 列表(全),
- 列表(简),
- 数据网格(全),
- 数据网格(简),
- 详情,
- 创建,
- 修改,
- 选择框,
- 列表(双击编辑)。
# 关联属性
一个表中的属性可以与另一个表中的属性相关联,它用来实现更加复杂的查询、删除等数据操作,并确保两个表之间的数据一致性和完整性。
- 关联属性只可选择其他实体属性中的主键或关联属性。
- 选择关联属性后,可选择关联实体属性记录删除规则:
- 不允许删除:在删除关联实体中的记录之前,必须先将与之相关联的其他实体中的记录删除。这种设置通常用于保护数据的完整性和一致性,避免因误操作或者意外删除导致数据不一致或者丢失。
- 允许删除且同时删除本实体记录:如果删除了关联实体中的记录,那么本实体中与之关联的记录也会被自动删除。这种设置通常用于建立父子表之间的关系,例如在删除父表中的记录时,所有与之相关的子表中的记录都将被自动删除。
# 数据库列名
实体属性在数据库表中被存储为列,因此有列名。该列名目前与实体属性的名称相同,且不可修改。
# 实体的索引
显示属性在数据库中对应表的索引信息。系统自动为主键建立索引,不可修改。
# 实体逻辑
# 实体逻辑表
创建实体后,平台自动会生成一系列实体逻辑,可供调用。生成的逻辑表单如下:
逻辑名称 | 参数说明 | 功能说明 |
---|---|---|
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表格导入数据,仅支持在文件上传组件中作为上传地址字段使用 |
# 操作路径
- 全局逻辑里拖拽调用逻辑组件。
- 调用逻辑组件里展开实体,会看到对应方法。
- 选择合适的方法并填充参数。
# 注意事项
# import
import逻辑仅支持在文件上传组件中作为上传地址字段使用,且仅支持上传excel文件,如下图所示表示将excel表格中的数据上传到product实体。
导入的excel列表头必须要和实体属性对应,若导入的excel中列表头没有和实体属性中的名称或标题对应上,则导入结果会被忽略。
若excel中传入的某个字段类型与实体中字段类型不匹配,上传后可能会导致解析报错,例如实体中字段a为int类型,excel中传入的字段a中的值为string类型,可能会存在解析异常。
# 实体关系图
数据库中的实体关系图是一种图形化表示数据库中实体、属性和实体之间关系的工具。它显示了数据库中的所有表以及它们之间的关系,包括主键、外键和关系类型。实体关系图可以帮助用户更好地理解数据库结构,从而帮助设计和维护数据库。
有关联的实体之间往往会存在对应关系,包括
- 一对一关系:一个实体实例只能与另一个实体实例相关联,而另一个实体实例也只能与一个实体实例相关联。
- 例如一个人只能有一个身份证号码,一个身份证号码也只能对应一个人。
- 一对多(多对一)关系:一个实体实例可以与多个另一个实体实例相关联,但另一个实体实例只能与一个实体实例相关联。
- 例如一个订单可以有多个商品,但一个商品只能属于一个订单。
- 多对多关系:一个实体实例可以与多个另一个实体实例相关联,而另一个实体实例也可以与多个实体实例相关联
- 例如一个学生可以选修多门课程,一门课程也可以被多个学生选修。
# 查看实体关系图
点击数据下的实体关系图来查看实体关系图。
实体关系图示例: