# dumpling **Repository Path**: xiangsai/dumpling ## Basic Information - **Project Name**: dumpling - **Description**: 饺子-数据字典文档生成工具 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2023-04-14 - **Last Updated**: 2023-04-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目名:饺子 鉴于服务的公司内部confluence中的数据字典,大多数都是从数据库客户端copy出来的DDL文件。 对于开发人员说,编写数据字典需要把一张张表的DDL内容copy到confluence页面里,比较繁琐和浪费时间。 因此本人花了两个多月休息时间,编写了一个可以生成html,markdown,word,excel四种格式数据字典的maven插件 欢迎试用~ ps:由于本人只熟悉mysql数据库,所以该插件目前不支持mysql以外的数据库,欢迎好心人提oracle,sqlserver等数据库的PR,谢谢啦~ ## 技术栈 - [x] java1.8 - [x] junit5.7 - [x] SPI - [x] lambda - [x] freeMarker - [x] velocity ## 数据库支持 - [x] MySQL ## 文档生成支持 - [x] html - [x] word - [x] excel - [x] markdown ## 使用方式 ### 普通方式 + **引入依赖** ```xml com.wujunshen.dumpling dumpling-core ${latestVersion} ``` + **编写代码** ``` java /** * 获取数据源 */ public DataSource getDataSource() { File path = FileUtils.getFileByPath( FILE_OUTPUT_DIR + "/src/test/resources/properties/mysql.properties"); Properties properties = new Properties(); FileInputStream inputStream = new FileInputStream(Objects.requireNonNull(path)); properties.load(inputStream); // 数据源 HikariConfig config = new HikariConfig(); config.setDriverClassName(getDriver(properties)); config.setJdbcUrl(getUrl(properties)); config.setUsername(getUserName(properties)); config.setPassword(getPassword(properties)); // 设置可以获取tables备注信息 config.addDataSourceProperty("useInformationSchema", "true"); config.setMinimumIdle(2); config.setMaximumPoolSize(5); return new HikariDataSource(config); } /** * 获取生成引擎配置 */ public EngineConfig getEngineConfig( EngineFileType engineFileType, EngineTemplateType engineTemplateType) { return EngineConfig.builder() // 生成文件路径 .fileOutputDir(FILE_OUTPUT_DIR) // 打开目录 .openOutputDir(true) // 文件类型 .fileType(engineFileType) // 生成模板实现 .produceType(engineTemplateType) .build(); } /** * 配置 * * @param engineConfig EngineConfig * @return Configuration */ public Configuration config(EngineConfig engineConfig) { return Configuration.builder() // 版本 .version("1.0") // 描述 .description("数据字典") // 数据源 .dataSource(getDataSource()) // 生成配置 .engineConfig(engineConfig) // 生成配置 .produceConfig(setIgnoreSetting()) .build(); } /** * 设置忽略表配置 * * @return ProcessConfig */ public ProcessConfig setIgnoreSetting() { List ignoreTableName = new ArrayList<>(); ignoreTableName.add("test"); // 忽略表前缀 List ignorePrefix = new ArrayList<>(); ignorePrefix.add("test"); // 忽略表后缀 List ignoreSuffix = new ArrayList<>(); ignoreSuffix.add("test"); return ProcessConfig.builder() // 忽略表名 .ignoreTableName(ignoreTableName) // 忽略表前缀 .ignoreTablePrefix(ignorePrefix) // 忽略表后缀 .ignoreTableSuffix(ignoreSuffix) .build(); } /** * 执行数据字典生成的单元测试方法 * */ @Test @Order(0) @DisplayName("生成数据字典-md-freemarker") void mdFreemarker() { EngineConfig engineConfig = getEngineConfig(MD, FREEMARKER); Configuration config = config(engineConfig); execute(config); } ``` ### Maven 插件 ``` xml com.wujunshen.dumpling dumpling-maven-plugin ${latestVersion} com.zaxxer HikariCP 3.4.5 mysql mysql-connector-java 8.0.20 username password com.mysql.cj.jdbc.Driver jdbc:mysql://localhost:3306/xxx?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8&useInformationSchema=true html false freemarker 生成的文档名 数据字典 ${project.version} 数据字典 compile run ``` ## 生成效果图 ### html ![输入图片说明](https://images.gitee.com/uploads/images/2021/0110/045119_7182e9fc_43183.jpeg "db1.jpg") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0110/045202_21c6ab85_43183.jpeg "db2.jpg") ### excel ![输入图片说明](https://images.gitee.com/uploads/images/2021/0110/045233_1dbc9749_43183.jpeg "db3.jpg") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0110/045305_e5be4432_43183.jpeg "db4.jpg") ### word ![输入图片说明](https://images.gitee.com/uploads/images/2021/0110/045356_21269828_43183.jpeg "db5.jpg") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0110/045420_072cc3f0_43183.jpeg "db6.jpg") ### markdown ![输入图片说明](https://images.gitee.com/uploads/images/2021/0110/045451_a72f9b2e_43183.jpeg "db7.jpg") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0110/045517_9b4ecff3_43183.jpeg "db8.jpg")