场景:写文档确实是一件需要花时间的事情,特别是整理数据库的文档,更是让人头大。表多了,整理起来时间如流水般稍纵即逝
需求:在编码时就可以让程序或利用插件帮助我们实现文档的输出
方案:screw生成数据库文档,即美观又快捷
使用:
- 引入依赖
<!-- screw 生成数据库文档 --> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.30</version> </dependency> <dependency> <groupId>cn.smallbun.screw</groupId> <artifactId>screw-core</artifactId> <version>1.0.3</version> </dependency>
- 编写
/** * @Author:Hefery * @Version:1.0.0 * @Date:2021/11/26 3:36 * @Description:数据库表文档生成 */ public class DBDocTest extends AuthorityCenterApplicationTest { @Autowired private ApplicationContext applicationContext; @Test public void buildDBDoc() { DataSource dataSourceMysql = applicationContext.getBean(DataSource.class); // 生成文件配置 EngineConfig engineConfig = EngineConfig.builder() // 生成文件路径 .fileOutputDir("D:\\code\\IDEAProjects\\project\\doc\\数据库设计文档") // 打开目录 .openOutputDir(false) // 文件类型:HTML、MD .fileType(EngineFileType.HTML) .produceType(EngineTemplateType.freemarker).build(); // 生成文档配置, 包含自定义版本号、描述等等 // 数据库名_description_version.html Configuration config = Configuration.builder() .version("1.0.0") .description("relaxed-eating-module-mall") .dataSource(dataSourceMysql) .engineConfig(engineConfig) .produceConfig(getProduceConfig()) .build(); // 执行生成 new DocumentationExecute(config).execute(); } /** * 配置想要生成的数据表和想要忽略的数据表 * @return */ private ProcessConfig getProduceConfig() { // 想要忽略的数据表 List<String> ignoreTableName = Collections.singletonList("undo_log"); // 忽略表前缀, 忽略 a、b 开头的数据库表 List<String> ignorePrefix = Arrays.asList("a", "b"); // 忽略表后缀 List<String> ignoreSuffix = Arrays.asList("_test", "_Test"); return ProcessConfig.builder() // 根据名称指定表生成 .designatedTableName(Collections.emptyList()) // 根据表前缀生成 .designatedTablePrefix(Collections.emptyList()) // 根据表后缀生成 .designatedTableSuffix(Collections.emptyList()) // 忽略表 .ignoreTableName(ignoreTableName) // 按照前缀忽略 .ignoreTablePrefix(ignorePrefix) // 按照后缀忽略 .ignoreTableSuffix(ignoreSuffix) .build(); } }