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';
标签使用效果: