Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
193 lines (131 sloc) 5.51 KB

点击下载Demo.mdj文件体验加速器功能

StartUML To All

支持将StartUML .mdj 源文件中的 ER实体 转换为Mysql DDL语句、JavaBean、数据库Markdown文档、Liquibase Groovy脚本。

使用请访问blink官网:http://acc.utopiavip.org/blink

StartUML ER实体 设计约定

StartUML不支持索引、默认值、主键自增长的设置,同时无法导出Mysql备注字段,没有很好的插件支持,因此开发该导出工具。

下面使用简单的用户表加以演示.

用户表包含:

  • user_id:用户ID,主键、自增长
  • user_name:用户名,唯一索引
  • status:状态,**普通索引,默认值 'ACTIVE' **
  • organization_id:公司ID
  • department_id:部门ID,公司ID和部门ID组成联合普通索引
  • nickname:昵称,可以为空

如果需要使用该工具,你需要遵守以下设计约定:

如何设置索引?

索引写在ER Entity的Documentation属性中 格式:

  • 唯一索引:U_INDEX_indexName(column1,column2,...)
  • 普通索引:N_INDEX_indexName(column1,column2,...)

表Documentation属性示例图:

用户表
U_INDEX_indexName1(user_name)
N_INDEX_indexName2(organization_id,department_id)

如何设置Column默认值?

格式:DEFAULT[val], val是默认值。生成SQL时将直接读取默认值,不做任何转换

字段Documentation属性示例图:

  • 字符型默认值
你好,我是字符型默认值 DEFAULT['ACTIVE']
  • 数字型默认值
你好,我是数字型默认值 DEFAULT[0]

如何设置自增长主键?

以下方式已启用,直接将Column标记为primaryKey,当类型为 INTEGER 或 BIGINT 时将自动设置自增长 首先,你需要将Column标记为primaryKey。然后,在字段的在Documentation属性中配置AUTO_INCREMENT表示自增长

字段属性示例图:

用户ID AUTO_INCREMENT

导出Mysql DDL语句

CREATE TABLE user (
    user_id INT(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID ',
    user_name VARCHAR(60) NOT NULL COMMENT '用户名',
    status VARCHAR(15) NOT NULL DEFAULT 'ACTIVE' COMMENT '用户状态 ',
    organization_id INT(11) NOT NULL COMMENT '公司',
    department_id INT(11) NOT NULL COMMENT '部门',
    nickname VARCHAR(255)  COMMENT '昵称',
    PRIMARY KEY (user_id),
    INDEX indexName2 (organization_id,department_id),
    UNIQUE INDEX indexName1 (user_name)
)
COMMENT = '用户表';

导出JavaBean

public class User {
    private Integer userId;
    private String userName;
    private String status;
    private Integer organizationId;
    private Integer departmentId;
    private String nickname;
}

导出API字段

使用表中字段生成api文档中需要的字段

参数 必输 类型 备注
userId Y Integer 用户ID
userName Y String 用户名
status Y String 用户状态
organizationId Y Integer 公司
departmentId Y Integer 部门ID
nickname N String
roleId Y Integer 角色ID

导出JSON数据

一键导出JSON数据,方便进行API调试。需要格式化的话在 Json.cn 中处理一下即可

{"user_id":"用户ID ","user_name":"用户名","status":"用户状态  ","organization_id":"公司","department_id":"部门ID","nickname":"","role_id":"角色ID"}

导出Markdown数据库文档(会带目录)

Primary Key: (user_id) Index: indexName2(organization_id,department_id) Index: indexName1(user_name)

Name Type Nullable Default Comment
user_id INTEGER false 用户ID
user_name VARCHAR false 用户名
status VARCHAR false 'ACTIVE' 用户状态
organization_id INTEGER false 公司
department_id INTEGER false 部门
nickname VARCHAR true 昵称

导出Liquibase Groovy脚本

changeSet(author:'blink', id:'1527036831908') {
    createTable(tableName: "user") {
        column(name: 'user_id',           type: 'INTEGER',   autoIncrement: true,  remarks: '用户ID ') {
            constraints(primaryKey: true)
        }
        column(name: 'user_name',         type: 'VARCHAR',   remarks: '用户名') {
            constraints(nullable: false)
        }
        column(name: 'status',            type: 'VARCHAR',  defaultValue: 'ACTIVE',   remarks: '用户状态 ') {
            constraints(nullable: false)
        }
        column(name: 'organization_id',   type: 'INTEGER',   remarks: '公司') {
            constraints(nullable: false)
        }
        column(name: 'department_id',     type: 'INTEGER',   remarks: '部门') {
            constraints(nullable: false)
        }
        column(name: 'nickname',          type: 'VARCHAR',   remarks: '昵称')
    }
    createIndex(indexName: "indexname2", tableName: "user") {
        column(name: 'organization_id)
        column(name: 'department_id)
    }
    createIndex(indexName: "indexname1", tableName: "user",unique: "true") {
        column(name: 'user_name)
    }
}
You can’t perform that action at this time.