表数据集

表数据集是最常用的数据集类型,它也是一一对应物理数据库中的表。

定义表模型之后,平台会自动同步在物理数据库生成对应的表,并且还会生成 mapper、model 等 Java 后端代码,用于在后端服务中对数据表进行 CRUD。

数据集设计

数据集可以采用两种方式进行设计:

正向设计

先在平台中创建数据集,再根据模型定义自动生成物理数据库的真实表。

创建数据集又有两种方式:

  • 直接创建一个只有主键的空白数据集
  • 使用模板创建一个有一些列的数据集

常规创建

在动态数据集的右侧,点击+按钮,可以创建新的表:

undefined

undefined

表的模型定义包括数据集( 表) 和列( 字段) 的定义。

1703589397445

列定义包括字段的名称、 标识、 数据类型、 长度、 精度、 必须、 唯一、 索引。部分属性是在高级中进行定义。

数据类型包括文本、 数字、 长数字、 含小数点数字、 精确数字、 日期、 日期时间、 长文本、 图片、文件、 富文本等。

undefined

其中, 图片和文件数据类型, 字段中只存储文件标识, 图片和文件实际存储在 MinIO 对象存储中。

1703589615671

使用扩展组件创建

在很多时候,业务数据上都要存储创建人、创建时间、修改人和修改时间等信息,即数据集有一些相同的列。平台提供数据集模板,在模板中定义列,创建数据集时选择一个数据集模板,数据集中自动添加上模板中的列。

要使用模板创建的功能,需要先引入“动态数据集扩展”组件。

undefined

引入后,创建动态数据集时,可以选择扩展组件中自带的模板。

undefined

扩展组件默认带了三个模版,选择后就会在动态数据集中生成相关的列,比如选择创建修改人版本锁模板,会自动生成相关字段:

undefined

以上字段在前端页面,无需手动维护里边的内容,只需要在页面引入“数据集扩展”组件,通过动态数据集进行数据的添加或修改时,系统会自动维护创建修改人等列。注意:创建人和修改人需要使用门户组织架构里边的人员,如果是 system 账号不会写入信息

undefined

使用模板创建

当扩展组件中的模板不满足需求时,可以自定义数据集模板。数据模型文件的后缀是 data.m,数据集模板文件的后缀是 data.template.m。

数据集模板由两个文件组成,一个是数据集模板文件 XXX.data.template.m,另一个是数据集模板的元信息文件 XXX.data.template.m.meta。这两个文件的内容和数据集的两个文件一致。

例如:service/main 目录下模板文件 creator.data.template.m 中的代码如下

    <data filepath="service/main/creator.data.template.m">
        <class _version="2.0.27">
            <label>创建修改人模版</label>
            <property xmlns="http://www.justep.com/model"
                did="C928134A5BB00001F3921A5087F7D210" dataType="String"
                extType="String" name="fcreator">
                <label>创建人全编码</label>
            </property>
            <property xmlns="http://www.justep.com/model"
                did="C92864A0B0600001B038DB706BF03011" dataType="String"
                extType="String" name="fcreatorName" length="">
                <label>创建人</label>
            </property>
            <property xmlns="http://www.justep.com/model"
                did="C92864A0B0600001B038DB706BF03012" dataType="DateTime"
                extType="DateTime" name="fcreateTime" length="">
                <label>创建时间</label>
            </property>
            <property xmlns="http://www.justep.com/model"
                did="C928134A5BB00001F3921A5087F7D213" dataType="String"
                extType="String" name="fmodifier">
                <label>最后修改人全编码</label>
            </property>
            <property xmlns="http://www.justep.com/model"
                did="C92864A0B0600001B038DB706BF03014" dataType="String"
                extType="String" name="fmodifierName" length="">
                <label>最后修改人</label>
            </property>
            <property xmlns="http://www.justep.com/model"
                did="C92864A0B0600001B038DB706BF03015" dataType="DateTime"
                extType="DateTime" name="fmodifyTime" length="">
                <label>最后修改时间</label>
            </property>
        </class>
    </data>

service/main 目录下模板元信息文件 creator.data.template.m.meta 中的代码如下

    {"kind":"data","label":"创建修改人模版"}

创建动态数据集时,模板中会列出所有数据集模板文件 data.template.m,选择一个模板即可

逆向设计

如果先有物理数据库的表,可以再反向生成数据集,包括表和字段的中文注释也会同时反向生成。

undefined

创建方式

创建方式如下图所示:

undefined

undefined

在生成时,默认勾选小驼峰命名,也就是会把数据库表的 custom_name 列标识转换为 customName 作为数据集的列标识。

导入后,在动态数据集中会自动加入该数据集:

undefined

配置说明

逆向生成的数据集,和常规创建的数据集,最大的区别有 2 个地方:

  • 禁止建表

意思是引入的数据集,默认不会同步去修改原来的外部数据库表结构,只是去操作数据的 CRUD。

如果用户想修改数据集的结构,并且要同步去修改物理数据库表结构,可以手动取消这个禁止建表的配置。

undefined

  • 数据菜单不提供查询和修改数据功能

undefined

由于开启了禁止建表,原来的数据菜单不提供相关功能。如果要查看数据,可以使用 adminer 在线数据库管理工具访问对应的数据库。入口如下所示:

undefined

此外,表的数据模型设计还支持以下特性:

  • 扩展 SQL: 支持定义在模型生成数据库表后的扩展执行的 SQL 语句, 用于生成自定义的多列联合索引或触发器等, 扩展 SQL 支持按数据库类型分别定义。
  • 命名风格: 支持按小驼峰或蛇式命名风格生成物理数据表和字段标识。
  • 三大范式: 支持一对一、 一对多和多对多三大范式数据关系定义。

列设置

一个数据集可以包括若干个列,每一列信息主要包括列名称、列标识、类型、是否必填、是否主键、是否版本锁。更多列的高级设置参考《物理模型

  • 列名称:用于界面显示,所以支持输入中文
  • 列标识:用于在代码中使用列,所以只支持字母和数字,且必须以字母开头,不能使用数据库关键字
  • 类型:用于标明列的类型,支持的类型见下表
数据集列类型 MySQL 数据类型 Java 类型 说明
文本 varchar(254) String 默认长度254,可设置
数字 int(11) Integer 范围:-2147483648到+2147483647
含小数点数字 double Double 浮点数,非精确数字
长数字 bigint(20) Long
精确数字 decimal(10,5) BigDecimal 默认长度18,精度2,可设置
日期 date Date
日期时间 datetime Date
长文本 mediumtext String
图片 mediumtext String 数据库中存储标识,文件存储到存储服务中
文件 mediumtext String 同上
富文本 mediumtext String 数据库中存 html 源码和文件标识,文件存储到存储服务中

主键

数据集默认一列主键,可以设置多列为主键列,注意不能没有主键列

1721616337402

设置主键后,创建表时会生成主键索引

1721643177981

设置多列为主键,创建多列主键索引

1721643202479

版本锁

数据集增加一列数字类型的列,用于实现乐观锁的能力,避免更新冲突

1721616826868

关联引用

在列中设置关联引用(数据源及展现方式),页面上只需放输入框组件即可实现下拉选择、单选组、多选组、弹出窗口选择。关联引用旨在简化页面开发,具体使用参考《关联引用》,运行效果如下图所示

默认值(数据迁移)

当数据集的某列一开始允许为空,后续因业务需求,该列不允许为空后,此时数据表中存在该列为空的数据。在该列的高级设置中设置必须,此时开发环境、生产环境创建表时,都会报错(对非空字段进行安全性检查,出现数据迁移检查不通过),如下图所示

1721627826596

当数据表中存在空数据时,设置默认值(数据迁移),会在建表前将空值替换为默认值(数据迁移),设置界面如下图所示

1721627887033

重新建表后,空值都被替换为默认值(数据迁移),如下图所示

1721628636376

保存路径

  • 数据集的模型描述文件

xxx.data.m 保存在当前模块的根目录下,比如 main 模块的根目录下:

undefined

在 .meta 文件中,会使用 "kind":"data" 来标识表。

  • 数据集的数据

表的数据,保存在对应的物理数据库表中。可以通过 adminer 在线数据库管理工具在线浏览。

undefined

需要注意的是,表数据集默认生成的数据库表名,会在数据集标识前边加上模块标识,比如在 main 模块下,数据库表名会自动拼接为 main_xxx。

如果需要自定义这块的数据库表名,可以在以下截图处修改:

undefined

使用场景

表数据集的使用场景非常广泛,只要涉及到对数据的 CRUD,都会使用到表数据集,不限于表格展示数据,表单新增、修改数据,删除数据,统计数据等等。

表数据集,在前端页面会以数据组件的方式来使用。

undefined

将数据集拖动到页面后,该数据组件就会在各组件进行绑定使用了:

  • 表格组件绑定整个数据组件

undefined

  • 输入框组件绑定数据组件的某个字段

undefined

results matching ""

    No results matching ""