# 初始化实体
低代码开发IDE内置了可视化实体设计的功能, 支持实体管理、数据库表结构反向生成实体等功能,支持多种数据库(H2,MySQL,DM等)。基于实体可以生成功能页面、API 接口等,是低代码平台最重要的核心功能之一。
创建实体的方式有四种:
- 手工创建实体:直接在IDE中创建实体,界面操作简单,适合对实体,字段,关系,索引等进行二次调整的场景。
- 从数据库导入实体:需要先设计好模型并初始化到数据库中,可以考虑使用 PDManer (opens new window) 来设计,参考PDManner实体设计;
- 从Excel导入实体:通过Excel表格的方式导入实体,适合简单的实体设计场景。
- 从Java创建实体:通过Java代码创建实体,适合对实体进行二次开发场景。
其中前三种创建方式,是在低代码IDE中操作,最后一种是通过高代码的方式创建实体, 参考从Java创建实体。。
# 手工创建实体
在低代码IDE中,点击 + 新建实体,之后手工配置字段,所有,关系,事件等。
# 从数据库导入
- 初始化数据库
如果连接的数据库已经存在了数据表,可以跳过这一步。
首先,我们需要在数据库中创建一个合同表,这里提供 MySQL 和 H2 的数据库表结构供学习使用。
MySQL 初始化代码
# MySQL
DROP TABLE IF EXISTS Contract;
CREATE TABLE Contract(
id VARCHAR(36) NOT NULL COMMENT '唯一ID' ,
name VARCHAR(150) COMMENT '合同名称' ,
code VARCHAR(50) COMMENT '合同编码' ,
sales_id VARCHAR(36) COMMENT '销售经理 ID' ,
dept_id VARCHAR(36) COMMENT '所属部门 ID' ,
description VARCHAR(2000) COMMENT '合同描述' ,
sign_date DATETIME COMMENT '签约日期' ,
status VARCHAR(15) COMMENT '合同状态' ,
tenant_id VARCHAR(60) COMMENT '租户号' ,
is_deleted BIT DEFAULT false COMMENT '是否删除' ,
created_by VARCHAR(36) COMMENT '创建人' ,
created_by_name VARCHAR(150) COMMENT '创建人姓名' ,
created_at TIMESTAMP DEFAULT now() COMMENT '创建时间' ,
updated_by VARCHAR(36) COMMENT '更新人' ,
updated_by_name VARCHAR(150) COMMENT '更新人姓名' ,
updated_at TIMESTAMP DEFAULT now() COMMENT '更新时间' ,
PRIMARY KEY (id)
) COMMENT = '合同';
H2 初始化代码
# H2
CREATE TABLE Contract(
id VARCHAR(36) NOT NULL,
name VARCHAR(150),
code VARCHAR(50),
sales_id VARCHAR(36),
dept_id VARCHAR(36),
description VARCHAR(2000),
sign_date DATE,
status VARCHAR(15),
tenant_id VARCHAR(60),
is_deleted BOOLEAN DEFAULT false,
created_by VARCHAR(36),
created_by_name VARCHAR(150),
created_at TIMESTAMP DEFAULT now(),
updated_by VARCHAR(36),
updated_by_name VARCHAR(150),
updated_at TIMESTAMP DEFAULT now(),
PRIMARY KEY (id)
);
COMMENT ON TABLE Contract IS '合同';
COMMENT ON COLUMN Contract.id IS '唯一ID';
COMMENT ON COLUMN Contract.name IS '合同名称';
COMMENT ON COLUMN Contract.code IS '合同编码';
COMMENT ON COLUMN Contract.sales_id IS '销售经理 ID';
COMMENT ON COLUMN Contract.dept_id IS '所属部门 ID';
COMMENT ON COLUMN Contract.description IS '合同描述';
COMMENT ON COLUMN Contract.sign_date IS '签约日期';
COMMENT ON COLUMN Contract.status IS '合同状态';
COMMENT ON COLUMN Contract.tenant_id IS '租户号';
COMMENT ON COLUMN Contract.is_deleted IS '是否删除';
COMMENT ON COLUMN Contract.created_by IS '创建人';
COMMENT ON COLUMN Contract.created_by_name IS '创建人姓名';
COMMENT ON COLUMN Contract.created_at IS '创建时间';
COMMENT ON COLUMN Contract.updated_by IS '更新人';
COMMENT ON COLUMN Contract.updated_by_name IS '更新人姓名';
COMMENT ON COLUMN Contract.updated_at IS '更新时间';
- 导入实体
从数据库中导入实体:

低代码平台支持多种数据源,具体可以参考应用配置,这里我们选用 H2 作为实现的示例。选择对应的数据表名,之后点击生成实体。


# 从Excel导入
在低代码IDE中,选择从Excel导入, 下载Excel模版,填写完后上传即可。

在弹出窗口中,点击下载模版,下载后,填写完后上传即可。

Excel模版内容如下:

# 实体元数据
导入的实体数据,存储在 app/entities/ 目录下。合同实体元数据结构如下:
查看合同实体元数据
{
"title" : "合同",
"tableName" : "CONTRACT",
"fields" : {
"id" : {
"name" : "id",
"packageName" : "",
"title" : "唯一ID",
"primaryKey" : true,
"autoIncrement" : false,
"type" : "VARCHAR",
"length" : 36,
"precision" : 36,
"scale" : 0,
"nullable" : false,
"columnName" : "ID"
},
"name" : {
"name" : "name",
"packageName" : "",
"title" : "合同名称",
"primaryKey" : false,
"autoIncrement" : false,
"type" : "VARCHAR",
"length" : 150,
"precision" : 150,
"scale" : 0,
"nullable" : true,
"columnName" : "NAME"
},
"code" : {
"name" : "code",
"packageName" : "",
"title" : "合同编码",
"primaryKey" : false,
"autoIncrement" : false,
"type" : "VARCHAR",
"length" : 50,
"precision" : 50,
"scale" : 0,
"nullable" : true,
"columnName" : "CODE"
},
"salesId" : {
"name" : "salesId",
"packageName" : "",
"title" : "销售经理 ID",
"primaryKey" : false,
"autoIncrement" : false,
"type" : "VARCHAR",
"length" : 36,
"precision" : 36,
"scale" : 0,
"nullable" : true,
"columnName" : "SALES_ID"
},
"deptId" : {
"name" : "deptId",
"packageName" : "",
"title" : "所属部门 ID",
"primaryKey" : false,
"autoIncrement" : false,
"type" : "VARCHAR",
"length" : 36,
"precision" : 36,
"scale" : 0,
"nullable" : true,
"columnName" : "DEPT_ID"
},
"description" : {
"name" : "description",
"packageName" : "",
"title" : "合同描述",
"primaryKey" : false,
"autoIncrement" : false,
"type" : "VARCHAR",
"length" : 2000,
"precision" : 2000,
"scale" : 0,
"nullable" : true,
"columnName" : "DESCRIPTION"
},
"signDate" : {
"name" : "signDate",
"packageName" : "",
"title" : "签约日期",
"primaryKey" : false,
"autoIncrement" : false,
"type" : "DATE",
"length" : 10,
"precision" : 10,
"scale" : 0,
"nullable" : true,
"columnName" : "SIGN_DATE"
},
"status" : {
"name" : "status",
"packageName" : "",
"title" : "合同状态",
"primaryKey" : false,
"autoIncrement" : false,
"type" : "VARCHAR",
"length" : 15,
"precision" : 15,
"scale" : 0,
"nullable" : true,
"columnName" : "STATUS"
},
"tenantId" : {
"name" : "tenantId",
"packageName" : "",
"title" : "租户号",
"primaryKey" : false,
"autoIncrement" : false,
"type" : "VARCHAR",
"length" : 60,
"precision" : 60,
"scale" : 0,
"nullable" : true,
"columnName" : "TENANT_ID"
},
"isDeleted" : {
"name" : "isDeleted",
"packageName" : "",
"title" : "是否删除",
"primaryKey" : false,
"autoIncrement" : false,
"type" : "BOOLEAN",
"length" : 1,
"precision" : 1,
"scale" : 0,
"nullable" : true,
"columnName" : "IS_DELETED",
"columnDefault" : "FALSE"
},
"createdBy" : {
"name" : "createdBy",
"packageName" : "",
"title" : "创建人",
"primaryKey" : false,
"autoIncrement" : false,
"type" : "VARCHAR",
"length" : 36,
"precision" : 36,
"scale" : 0,
"nullable" : true,
"columnName" : "CREATED_BY"
},
"createdByName" : {
"name" : "createdByName",
"packageName" : "",
"title" : "创建人姓名",
"primaryKey" : false,
"autoIncrement" : false,
"type" : "VARCHAR",
"length" : 150,
"precision" : 150,
"scale" : 0,
"nullable" : true,
"columnName" : "CREATED_BY_NAME"
},
"createdAt" : {
"name" : "createdAt",
"packageName" : "",
"title" : "创建时间",
"primaryKey" : false,
"autoIncrement" : false,
"type" : "TIMESTAMP",
"length" : 26,
"precision" : 26,
"scale" : 6,
"nullable" : true,
"columnName" : "CREATED_AT",
"columnDefault" : "LOCALTIMESTAMP"
},
"updatedBy" : {
"name" : "updatedBy",
"packageName" : "",
"title" : "更新人",
"primaryKey" : false,
"autoIncrement" : false,
"type" : "VARCHAR",
"length" : 36,
"precision" : 36,
"scale" : 0,
"nullable" : true,
"columnName" : "UPDATED_BY"
},
"updatedByName" : {
"name" : "updatedByName",
"packageName" : "",
"title" : "更新人姓名",
"primaryKey" : false,
"autoIncrement" : false,
"type" : "VARCHAR",
"length" : 150,
"precision" : 150,
"scale" : 0,
"nullable" : true,
"columnName" : "UPDATED_BY_NAME"
},
"updatedAt" : {
"name" : "updatedAt",
"packageName" : "",
"title" : "更新时间",
"primaryKey" : false,
"autoIncrement" : false,
"type" : "TIMESTAMP",
"length" : 26,
"precision" : 26,
"scale" : 6,
"nullable" : true,
"columnName" : "UPDATED_AT",
"columnDefault" : "LOCALTIMESTAMP"
}
},
"relations" : { },
"indexes" : {
"PRIMARY_KEY_CD" : {
"name" : "PRIMARY_KEY_CD",
"packageName" : "",
"fields" : [ {
"name" : "id"
} ],
"unique" : true
}
},
"onEvents" : { }
}