【Java】Mysql文档生成工具
资料参考:
https://blog.csdn.net/weixin_43797561/article/details/122809269
https://blog.csdn.net/qq_33177268/article/details/124325242
新建Maven工程:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.cloud9</groupId> <artifactId>MySQL-Document</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <!--文档生成工具 --> <dependency> <groupId>cn.smallbun.screw</groupId> <artifactId>screw-core</artifactId> <version>1.0.5</version> </dependency> <!--数据库驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> <version>8.0.25</version> </dependency> <!--数据库连接池 --> <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>2.5.1</version> </dependency> <!-- ini 配置读取 --> <dependency> <groupId>org.ini4j</groupId> <artifactId>ini4j</artifactId> <version>0.5.4</version> </dependency> <!--————————————————--> <!--版权声明:本文为CSDN博主「风华正茂_Yang」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。--> <!--原文链接:https://blog.csdn.net/weixin_43797561/article/details/122809269--> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.0</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>Application</mainClass> <!-- 主类的位置,例如上图文件,主类配置应为: --> <!-- <mainClass>top.nihilwater.App</mainClass> --> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
启动类编写:
import cn.smallbun.screw.core.Configuration; import cn.smallbun.screw.core.engine.EngineConfig; import cn.smallbun.screw.core.engine.EngineFileType; import cn.smallbun.screw.core.engine.EngineTemplateType; import cn.smallbun.screw.core.execute.DocumentationExecute; import cn.smallbun.screw.core.process.ProcessConfig; import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; import org.ini4j.Profile; import org.ini4j.Wini; import javax.sql.DataSource; import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; /** * @projectName: MySQLDocument * @author: Cloud9 * @date: 2022年05月26日 16:23 * @version: 1.0 */ public class Application { private static Wini configFile; static { try { configFile = new Wini(new File("config.ini")); } catch (Exception e) { e.printStackTrace(); } } /** * 数据源初始化 * @param * @return javax.sql.DataSource * @author Cloud9 * @createTime 2022/5/26 17:26 * */ private static DataSource initDataSource() { try { Profile.Section section = configFile.get("mysql-config"); //数据源 HikariConfig hikariConfig = new HikariConfig(); hikariConfig.setDriverClassName(section.get("driverClassname")); hikariConfig.setJdbcUrl(section.get("jdbcUrl")); hikariConfig.setUsername(section.get("username")); hikariConfig.setPassword(section.get("password")); //设置可以获取tables remarks信息 final String TABLE_REMARK = "useInformationSchema"; hikariConfig.addDataSourceProperty(TABLE_REMARK, section.get(TABLE_REMARK, "true")); hikariConfig.setMinimumIdle(Integer.parseInt(section.get("min-idle", "2"))); hikariConfig.setMaximumPoolSize(Integer.parseInt(section.get("max-pool-size", "10"))); return new HikariDataSource(hikariConfig); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 模板引擎初始化 * @return cn.smallbun.screw.core.engine.EngineConfig * @author Cloud9 * @createTime 2022/5/26 17:31 */ private static EngineConfig initEngineConfig() { Profile.Section section = configFile.get("template-engine-config"); //生成配置 return EngineConfig.builder() //生成文件路径 .fileOutputDir(section.get("output-dir", ".\\")) //打开目录 .openOutputDir(true) //文件类型 .fileType(EngineFileType.HTML) //生成模板实现 .produceType(EngineTemplateType.freemarker) //自定义文件名称 .fileName(section.get("file-name", "测试案例")) .build(); } /** * 处理配置初始化 * @return cn.smallbun.screw.core.engine.EngineConfig * @author Cloud9 * @createTime 2022/5/26 17:31 */ private static ProcessConfig initProcessConfig() { Profile.Section section = configFile.get("ignore-config"); Profile.Section designateSection = configFile.get("designate-config"); if (null == section && null == designateSection) return ProcessConfig.builder().build(); return ProcessConfig.builder() //指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置 //根据名称指定表生成 .designatedTableName(getMultiParam(designateSection.get("table"))) //根据表前缀生成 .designatedTablePrefix(getMultiParam(designateSection.get("prefix"))) //根据表后缀生成 .designatedTableSuffix(getMultiParam(designateSection.get("suffix"))) //忽略表名 .ignoreTableName(getMultiParam(section.get("table"))) //忽略表前缀 .ignoreTablePrefix(getMultiParam(section.get("prefix"))) //忽略表后缀 .ignoreTableSuffix(getMultiParam(section.get("suffix"))) .build(); } /** * 获取一组参数 * @return cn.smallbun.screw.core.engine.EngineConfig * @author Cloud9 * @createTime 2022/5/26 17:31 */ private static List<String> getMultiParam(String paramItem) { return null == paramItem ? new ArrayList<>() : Arrays.stream(paramItem.split(",")) .map(String::trim) .collect(Collectors.toList()); } /** * 全部配置初始化 * @return cn.smallbun.screw.core.engine.EngineConfig * @author Cloud9 * @createTime 2022/5/26 17:31 */ private static Configuration initConfiguration() { final Profile.Section section = configFile.get("doc-config"); return Configuration.builder() .title(section.get("title", "测试文档")) .organization(section.get("organization", "cloud9")) .organizationUrl(section.get("organizationUrl", "https://home.cnblogs.com/u/mindzone/")) .version(section.get("version", "1.0.0")) //版本 .description(section.get("description", "数据库设计文档生成")) //描述 //数据源 .dataSource( initDataSource()) //生成配置 .engineConfig(initEngineConfig()) //生成配置 .produceConfig( initProcessConfig()) .build(); } public static void main(String[] args) { //执行生成 new DocumentationExecute(initConfiguration()).execute(); } }
配置文件:
[mysql-config] driverClassname = com.mysql.cj.jdbc.Driver jdbcUrl = jdbc:mysql://localhost:3306/ymcd_aisw?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8 username = root password = 123456 useInformationSchema = true max-pool-size = 5 [template-engine-config] output-dir = . file-name = xx系统MySQL设计文档 [designate-config] [ignore-config] table = test_user, test_group prefix = gen_, qrtz_, sys_ suffix = _test [doc-config] title = xx系统MySQL设计文档 version = 1.0.0 description = xx系统设计文档生成 organization = Cloud9 organizationUrl = https://home.cnblogs.com/u/mindzone/
配置文件存放位置:
打包项目:
声明启动类:
无主清单,请参考:
https://blog.csdn.net/weixin_49736959/article/details/108969870
文件结构: