Hefery 的个人网站

Hefery's Personal Website

Contact:hefery@126.com
  menu
73 文章
0 浏览
1 当前访客
ღゝ◡╹)ノ❤️

文档输出工具screw—数据库设计

场景:写文档确实是一件需要花时间的事情,特别是整理数据库的文档,更是让人头大。表多了,整理起来时间如流水般稍纵即逝

需求:在编码时就可以让程序或利用插件帮助我们实现文档的输出

方案:screw生成数据库文档,即美观又快捷

image.png

使用:

  • 引入依赖
    <!-- 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();
        }
    
    }
    

标题:文档输出工具screw—数据库设计
作者:Hefery
地址:http://hefery.icu/articles/2022/03/14/1647188229678.html