更新时间:2024-08-09 GMT+08:00
分享

DDL标签使用指南

DDL,即数据定义语言(Data Definition Language),是SQL(结构化查询语言)的一部分,用于定义和管理数据库的结构。导入DDL通常指的是将数据库结构定义导入到数据库管理系统中,以便创建或修改数据库的模式。

本章节将为您介绍一系列核心DDL标签,帮助简化您的开发流程并提高编辑效率。

注意事项

  • SwaggerCodeGen会将n、FALSE、 No和off转换成boolean类型的false,将Y、true、Yes和ON转换成boolean类型的true,所以在java代码编译时会报错。因此“是否生成客户端”开关打开时,表中定义上述字段时可使用“别名标签”给字段设置别名。
  • 关系表标识:含有"_rel_"的表名,大小写不敏感。例如:t_rel_workspace4_workspace5。

关系标签

  • 一对多关系

    在MANY一方的关系字段上添加标注:COMMENT 'relation("关联表名","关联表字段","ONE2MANY")'。

    DDL示例:

    CREATE TABLE `t_workspace2` (
        `id` varchar(200) NOT NULL,
        `new_name3` varchar(200) NOT NULL,
        `new_name4` varchar(200) NOT NULL,
        PRIMARY KEY (`id`)
    ) COMMENT = 'primaryKeyType("UUID")';
    
    CREATE TABLE `t_workspace3` (
        `id` varchar(200) NOT NULL,
        `new_name4` varchar(200) NOT NULL,
        `workspace2_id` varchar(200) NOT NULL COMMENT 'searchable;relation("t_workspace2","id","ONE2MANY")',
        PRIMARY KEY (`id`)
    ) COMMENT = 'primaryKeyType("UUID")';

    标签使用效果:

  • 多对多关系

    在多对多关系表的关系字段上添加标注:COMMENT = 'relation("关联表名","关联表字段","MANY2MANY")'。

    此处关系的首要方关联字段写在关系的次要方关联字段前面,即workspace4_id字段在workspace5_id前面。示例中首要方:t_workspace4,次要方:t_workspace5。

    DDL示例:

    CREATE TABLE `t_workspace4` (
        `id` varchar(200) NOT NULL,
        `new_name3` varchar(200) NOT NULL,
        `new_name4` varchar(200) NOT NULL,
        PRIMARY KEY (`id`)
    ) COMMENT = 'primaryKeyType("UUID")';
    
    CREATE TABLE `t_workspace5` (
        `id` varchar(200) NOT NULL,
        `new_name3` varchar(200) NOT NULL,
        `new_name4` varchar(200) NOT NULL,
        `new_name5` varchar(200) NOT NULL,
        PRIMARY KEY (`id`)
    ) COMMENT = 'primaryKeyType("UUID")';
    
    CREATE TABLE `t_rel_workspace4_workspace5` (
        `new_name3` varchar(200) NOT NULL,
        `new_name4` varchar(200) NOT NULL,
        `workspace4_id` varchar(200) NOT NULL COMMENT 'relation("t_workspace4","id","MANY2MANY")',
        `workspace5_id` varchar(200) NOT NULL COMMENT 'relation("t_workspace5","id","MANY2MANY")',
        CONSTRAINT pk_t_rel_workspace4_workspace5 PRIMARY KEY (`workspace4_id`, `workspace5_id`)
    ) COMMENT = 'relWorkspace4Workspace5';

    标签使用效果:

  • 聚合关系

    在聚合关系的主表的关系字段上添加标注:COMMENT 'relation("关联表名","关联表字段","AGGREGATE")'。

    DDL示例:

    CREATE TABLE `t_spec_group` (
        `id` varchar(40) NOT NULL COMMENT 'id',
        `city_id` varchar(40) NOT NULL COMMENT 'relation("t_city","id","AGGREGATE")',
        `name` varchar(200) NULL,
        PRIMARY KEY (`id`)
    ) COMMENT = 'specGroup';
    
    
    CREATE TABLE `t_city` (
        `id` varchar(40) NOT NULL COMMENT 'id',
        `city` varchar(200) NULL,
        `dateType` date NOT NULL COMMENT 'dateType',
        PRIMARY KEY (`id`)
    ) COMMENT = 'city';

    标签使用效果:

  • 树递归关系

    在树递归关系BO表中的"parent_id"上添加标注:COMMENT 'relation("关联表名","关联表字段","RECURSIVE")'。

    DDL示例:

    CREATE TABLE `t_workspace6` (
        `parent_id` bigint(40) NULL COMMENT 'parent_id;relation("t_workspace6","id","RECURSIVE")',
        `id` bigint(40) NOT NULL,
        `new_name4` varchar(200) NOT NULL,
        `new_name5` varchar(200) NOT NULL,
        PRIMARY KEY (`id`)
    ) COMMENT = 'primaryKeyType("SNOWFLAKE")';

    标签使用效果:

主键标签

在comment中使用函数形式表示主键类型。可选值为:UUID、SNOWFLAKE、AUTO_INCREASE_INT32、AUTO_INCREASE_INT64、USER_DEFINE。

参数说明:

  • 标签名称:valueObject。
  • 数据类型:boolean类型。
  • 默认值:false。
标签规则
  • UUID时主键应是字符类型。
  • AUTO_INCREASE_INT32的主键应是int类型。
  • AUTO_INCREASE_INT64的主键应是bigint类型。
  • SNOWFLAKE时主键应是数值(int/long)类型。
  • 非USER_DEFINE的主键时,主键名不是“id”。
  • USER_DEFINE的主键时,未指定主键字段。
  • 同时非USER_DEFINE时,可以不指定主键(即ddl中可以没有primary key的声明语句)。
  • 当未指定标签时,指定主键情况下主键类型默认为USER_DEFINE; 未指定主键默认为UUID。
标签示例:
CREATE TABLE `t_workspace4` (
    `id` varchar(200) NOT NULL,
    `new_name3` varchar(200) NOT NULL,
    `new_name4` varchar(200) NOT NULL,
    PRIMARY KEY (`id`)
) COMMENT = 'primaryKeyType("UUID")';

标签使用效果:

值对象标签

在comment中使用函数形式表示Value Object类型BO,标识作用于值对象表的number字段。

参数说明:

  • 标签名称:valueObject。
  • 数据类型:boolean类型。
  • 默认值:false。

标签示例:

CREATE TABLE `t_workspace9` (
    `id` varchar(40) NOT NULL COMMENT 'id',
    `name` varchar(200) NOT NULL COMMENT 'name',
    PRIMARY KEY (`id`)
) COMMENT = 't_workspace9';

CREATE TABLE `t_object1` (
    `workspace9_id` varchar(0) NOT NULL COMMENT 'relation("t_workspace9","id","AGGREGATE")',
    `number` int NOT NULL COMMENT 'valueObject'
) COMMENT = 'object1';

标签使用效果:

字段允许搜索标签

在comment中使用函数形式表示字段允许搜索,标识作用于表中需设置为searchable的字段。

参数说明:

  • 标签名称:searchable。
  • 数据类型:boolean类型。
  • 默认值:false。

标签示例:

CREATE TABLE `t_workspace9` (
    `id` varchar(40) NOT NULL COMMENT 'id',
    `name` varchar(200) NOT NULL COMMENT 'name;searchable',
    PRIMARY KEY (`id`)
) COMMENT = 'workspace9';

与其他标签同时使用";"分隔使用示例:

CREATE TABLE `t_object1` (
    `workspace9_id` varchar(0) NOT NULL COMMENT 'relation("t_workspace9","id","AGGREGATE");searchable',
    `number` int NOT NULL COMMENT 'valueObject'
) COMMENT = 'object1';

标签使用效果:

别名标签

在comment中使用函数形式标识字段或表的别名,标识作用于表中字段或表名。

参数说明:

  • 标签名称:alias。
  • 数据类型:string类型。
  • 默认值:空(原字段名或表名)。

标签示例:

CREATE TABLE `t_workspace9` (
    `id` varchar(40) NOT NULL COMMENT 'id',
    `name` varchar(200) NOT NULL COMMENT 'alias("rename");searchable',
    PRIMARY KEY (`id`)
) COMMENT = 'alias("workspace10")';

标签使用效果:

  • 表名别名效果:

  • 字段别名效果:

字段数据类型标签

在comment中使用函数形式标识字段的数据类型,标识作用于表中字段,可使标识字段数据类型在模型中修改为标识类型。

参数说明:
  • 标签名称:type。
  • 数据类型:string类型。
  • 默认值:空(原字段数据库类型对应的java类型)。

标签示例:

CREATE TABLE `t_workspace9` (
    `id` varchar(40) NOT NULL COMMENT 'id',
    `name` varchar(200) NOT NULL COMMENT 'type("integer")',
    PRIMARY KEY (`id`)
) COMMENT = 't_workspace9';

标签使用效果:

相关文档