Spring Cloud快速创建数据库表(三)

176 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第13天,点击查看活动详情

前言

前面两篇介绍了如何搭建微服务开发框架,以及在开发过程中如何引入第三方依赖,并且以给项目添加访问MySQL的持久层框架mybatis进行了实际的操作。

既然是项目那么必然会涉及到数据库的访问,数据库中设计到一张一张的数据表,数据表是根据各个项目不同的业务设计出用来存储业务数据的结构,类似于一张一张的Excel表格。设计出了表结构之后,需要编写SQL脚本,将表结构写入到数据库中。

如果我们一个一个的字段去进行编写,可能比较耗费时间。下面介绍一种如何快速生成SQL脚本的方法,当然次方法有一个前提,需要提前准备好对应的Excel文件。

当然专业的数据库表设计工具可以选择powerdesignerEZDMLPDMan等。

准备工具

Excel、sublime、Navicat

物料准备

准备工作,需要类似下图的文本。

image.png

使用sublime编写SQL脚本

  • 复制字段名称列,粘贴到sublime中
  • cmd/ctrl+A全部选中
  • cmd/ctrl+shift+L进入列模式
  • cmd/ctrl+左方向键光标移动到每一行第一列
  • shift+有方向键选中第一列,cmd+k+小写L,字母变成小写。(cmd+k+u字母编程大写)

构建SQL语句结构

  • 移动光标到每一行第一列添加符号`
  • cmd+方向右键到每一行末尾,添加符号`
  • 添加空格
  • 粘贴每个字段的类型
  • 空格,添加DEFAULT NULL COMMENT
  • 空格,添加符号'',复制每个字段的中文描述到符号''中间
  • 移动光标到每行末添加逗号,
  • 将内容复制到SQL语句中
CREATE TABLE `xxx` (
  `id` bigint(50) NOT NULL COMMENT '主键ID',
  
  `querySequenceNo` VARCHAR ( 50 ) NOT NULL COMMENT '投保查询码',
  `areaCode` VARCHAR ( 10 ) DEFAULT NULL COMMENT '地区代码',
  `userCode` VARCHAR ( 30 ) DEFAULT NULL COMMENT '用户代码',
  `companyCode` VARCHAR ( 8 ) DEFAULT NULL COMMENT '公司代码',
  `queryDate` datetime DEFAULT NULL COMMENT '投保查询时间',
  `queryInvalidDate` datetime DEFAULT NULL COMMENT '查询失效时间',
  `billDate` datetime DEFAULT NULL COMMENT '签单日期',
  `effectiveDate` datetime DEFAULT NULL COMMENT '起保日期',
  `expireDate` datetime DEFAULT NULL COMMENT '终保日期',
  
  `createTime` datetime DEFAULT NULL COMMENT '创建时间',
  `createUser` bigint(50) DEFAULT NULL COMMENT '创建用户',
  `updateTime` datetime DEFAULT NULL COMMENT '更新时间',
  `updateUser` bigint(50) DEFAULT NULL COMMENT '更新用户',
  `deleteFlag` char(1) DEFAULT NULL COMMENT '是否已删除',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='xxx';

需要修改表名称和表的中文注释

执行SQL语句

将SQL语句放到Navicat等工具中进行执行

CREATE TABLE `xxx` (
  `id` bigint(50) NOT NULL COMMENT '主键ID',
  
  `querySequenceNo` VARCHAR ( 50 ) NOT NULL COMMENT '投保查询码',
  `areaCode` VARCHAR ( 10 ) DEFAULT NULL COMMENT '地区代码',
  `userCode` VARCHAR ( 30 ) DEFAULT NULL COMMENT '用户代码',
  `companyCode` VARCHAR ( 8 ) DEFAULT NULL COMMENT '公司代码',
  `queryDate` datetime DEFAULT NULL COMMENT '投保查询时间',
  `queryInvalidDate` datetime DEFAULT NULL COMMENT '查询失效时间',
  `billDate` datetime DEFAULT NULL COMMENT '签单日期',
  `effectiveDate` datetime DEFAULT NULL COMMENT '起保日期',
  `expireDate` datetime DEFAULT NULL COMMENT '终保日期',
  
  `createTime` datetime DEFAULT NULL COMMENT '创建时间',
  `createUser` bigint(50) DEFAULT NULL COMMENT '创建用户',
  `updateTime` datetime DEFAULT NULL COMMENT '更新时间',
  `updateUser` bigint(50) DEFAULT NULL COMMENT '更新用户',
  `deleteFlag` char(1) DEFAULT NULL COMMENT '是否已删除',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='xxx';

如果确定了行数,那么之后每一次在列编辑模式下,粘贴的行数一定要和文本行数相同。比如字段的行数是10个,那么粘贴字段类型的时候也必须是10行。粘贴COMMENT注释的时候也必须是10行,否则不能一一对应。因为准备的文本原因,不能分别指定每一个字段的是否空值,这种情况在Navicat中进行修改很方便。不小心多选择了一个光标,可以cmd+shift+鼠标左键进行取消