写作目的
提供一个小程序,使用它可以快速生成比较标准的数据库表设计Word文档,拿来即可用;大家也可以在此基本上修改,以满足各自的需求。
基本思路
- 可以通过sql获取数据库所有表的名称
SELECT TABLE_NAME AS name, TABLE_COMMENT AS comment FROM information_schema.`TABLES` WHERE TABLE_SCHEMA = #{database};
- 可以通过sql获取表的结构数据
SHOW FULL COLUMNS FROM ${tableName};
- 通过freemarker模板将表结构数据生成word文档
- 支持三种模式:导出全部,导出配置的表,导出除配置外的其他表
基本流程
- 新建数据表word模板文件,如:templates/tables.docx;
- tables.docx文件重命名为2003版的xml文件tables.xml;
- 用notepad++打开tables.xml,点击 插件 -> XMl tools-> Pretty print(libXML),格式化xml文件 ;
- 获取数据所有表和表的结构数据,进行数据组装
- 变量替换,“用户表” -> ${table.name} 等,并重命名成table.ftl文件;
- 执行程序,生成数据库表设计word文档 ;
- github源码地址
使用指南
- 根据需要修改系统application.yml配置,表导出配置和数据库连接配置;
- 执行com/ocean/angel/tool/ApplicationTests.java的generateTableStructure() 方法;
- 到/resources/words目录下,查看生成的数据库表设计word文档。
本文使用的freemarker语句:
- 遍历表名称
<#list tables as table>
${table.name}
</#list>
- 遍历表结构数据
<#list table.structure as item>
${item.code}
${item.field}
${item.type}
${item.isNull}
${item.comment}
</#list>
注意:freemarker模板不能传null, 如果数据为null,可以转换成空字符串。