# 初始化实体

低代码开发IDE内置了可视化实体设计的功能, 支持实体管理、数据库表结构反向生成实体等功能,支持多种数据库(H2,MySQL,DM等)。基于实体可以生成功能页面、API 接口等,是低代码平台最重要的核心功能之一。

创建实体的方式有四种:

  1. 手工创建实体:直接在IDE中创建实体,界面操作简单,适合对实体,字段,关系,索引等进行二次调整的场景。
  2. 从数据库导入实体:需要先设计好模型并初始化到数据库中,可以考虑使用 PDManer (opens new window) 来设计,参考PDManner实体设计
  3. 从Excel导入实体:通过Excel表格的方式导入实体,适合简单的实体设计场景。
  4. 从Java创建实体:通过Java代码创建实体,适合对实体进行二次开发场景。

其中前三种创建方式,是在低代码IDE中操作,最后一种是通过高代码的方式创建实体, 参考从Java创建实体。。

# 手工创建实体

在低代码IDE中,点击 + 新建实体,之后手工配置字段,所有,关系,事件等。

# 从数据库导入

  1. 初始化数据库

如果连接的数据库已经存在了数据表,可以跳过这一步。

首先,我们需要在数据库中创建一个合同表,这里提供 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 '更新时间';
  1. 导入实体

从数据库中导入实体:

低代码平台支持多种数据源,具体可以参考应用配置,这里我们选用 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" : { }
}
顶部