当前位置: 首页 > 科技观察

便于使用!一键生成数据库文档,这个开源的文档生成工具值得了解

时间:2023-03-13 22:27:51 科技观察

简介在企业级开发中,我们经常会花时间编写数据库表结构文档。文档状态:不是没有就是是,但是都是手写的,后期运维开发,需要在文档里面手动维护,非常繁琐。如果忘记保养一次,会给以后的工作带来很多麻烦,也会给自己和后代留下很多无形的坑。于是萌生了自己写一个插件工具的想法,但是由于前期在编程设计方面没有太多造诣,能力低下,所以无法实现自己的想法思路不错。随着工作经验的增加和知识的不断积累,终于在2020年3月中旬开始写作,4月初完成了第一版,本想近乎开源的完善,但由于工作繁忙,缺乏业余时间,我没有改进它。6月,由于工作原因,频繁设计和更改数据库,经常使用这个自己写的插件,省了不少钱。很多时间,很多问题都解决了。在仅有的且不多的空闲时间里,进行了开源的准备工作。2020年6月22日开源。欢迎大家使用、建议和贡献。至于名字,实在是太难想了。幸运的是,我聪明的小脑袋灵光一闪。如何突出它的小而重要?我从小就领悟到雷锋的螺丝精神,从雷锋日记中读到:虽然是一个小螺丝,也是一个微小的小齿轮,但如果少了,整台机器就无法运转。小螺丝没拧紧,一个小齿轮轻微损坏,机器运转也会出故障……感觉自己写的这个工具很有内涵。虽小,但发展中少了它是不行的。所以它被命名为螺丝钉(screw)。特性简洁、轻量、精心设计多数据库支持多种格式文档灵活扩展支持自定义模板数据库支持MySQLMariaDBTIDBOracleSqlServerPostgreSQLCacheDB(2016)H2(开发中)DB2(开发中)HSQL(开发中)SQLite(开发中)Hangao(开发中)Dameng(开发中)Xugu(开发中)RendaJincang(开发中)文档生成支持htmlwordmarkdown文档截图.screwscrew-core${lastVersion}编写代码/***文档生成*/voiddocumentGeneration(){//数据源HikariConfighikariConfig=newHikariConfig();hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/database");hikariConfig。setUsername("root");hikariConfig.setPassword("password");//设置获取tablesremarks信息hikariConfig.addDataSourceProperty("useInformationSchema","true");hikariConfig.setMinimumIdle(2);hikariConfig.setMaximumPoolSize(5);DataSourcedataSource=newHikariDataSource(hikariConfig);//生成配置EngineConfigengineConfig=EngineConfig.builder()//生成文件路径.fileOutputDir(fileOutputDir)//打开目录.openOutputDir(true)//Filetype.fileType(EngineFileType.HTML)//生成模板implementation.produceType(EngineTemplateType.freemarker)//自定义文件名.fileName("自定义文件名").build();//忽略表ArrayListignoreTableName=newArrayList<>();ignoreTableName.add("test_user");ignoreTableName.add("test_group");//忽略表前缀ArrayListignorePrefix=newArrayList<>();ignorePrefix.add("test_");//忽略表后缀ArrayListignoreSuffix=newArrayList<>();ignoreSuffix.add("_test");ProcessConfigprocessConfig=ProcessConfig.builder()//指定生成逻辑,当指定表存在时,指定表前缀,当指定表后缀时,会生成指定的表,其余ta不会生成bles,会跳过表配置。())//根据表后缀生成designatedTableSuffix(newArrayList<>())//忽略表名.ignoreTableName(ignoreTableName)//忽略表前缀.ignoreTablePrefix(ignorePrefix)//忽略表后缀.ignoreTableSuffix(ignoreSuffix).build();//配置Configurationconfig=Configuration.builder()//Version.version("1.0.0")//Description.description("数据库设计文档生成")//DataSource.dataSource(dataSource)//生成Configuration.engineConfig(engineConfig)//生成Configuration.produceConfig(processConfig).build();//执行生成newDocumentationExecute(config).execute();}Maven插件cn.smallbun.screwscrew-maven-plugin${lastVersion}com.zaxxerHikariCP3.4.5mysqlmysql-connector-java8.0.20rootpasswordcom.mysql.cj.jdbc.Driverjdbc:mysql://127.0.0.1:3306/xxxxHTMLfalsefreemarker测试文件名数据库文件生成${project.version}数据库文件<执行>编译运行扩展模块pojo生成函数功能介绍在开发中,需求分析和建模后,往往先在数据库中建表,再进行代码发展。那么pojo生成功能可以帮你在这个阶段省去一些重复劳动。使用pojo生成函数,直接根据数据库生成对应的javapojo对象。这样,后续的修改和开发就会很方便。数据库支持使用MySQL引入依赖cn.smallbun.screwscrew-extension${lastVersion}写代码/***pojo生成*/voidpojoGeneration(){//数据源HikariConfighikariConfig=newHikariConfig();hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/screw");hikariConfig.setUsername("screw");hikariConfig.setPassword("screw");//设置可以获取tablesremarks信息hikariConfig.addDataSourceProperty("useInformationSchema","true");hikariConfig.setMinimumIdle(2);hikariConfig.setMaximumPoolSize(5);DataSourcedataSource=newHikariDataSource(hikariConfig);ProcessConfigprocessConfig=ProcessConfig.builder()//指定生成逻辑,当有指定表时,指定表前缀,指定表后缀,会生成指定的表,其余表不生成,表configurat离子被跳过。DesignatedTableName(newArrayList<>())//DesignatedTablePrefix(newArrayList<>())//根据表后缀生成.DesignatedTableSuffix(newArrayList<>()).build();//设置生成pojo相关配置PojoConfigurationconfig=newPojoConfiguration();//设置文件存放路径config.setPath("/cn/smallbun/screw/");//设置包名config.setPackageName("cn.smallbun.screw");//设置是否使用lombokconfig.setUseLombok(false);//设置数据源config.setDataSource(数据源);//设置命名策略config.setNameStrategy(newHumpNameStrategy());//设置表过滤逻辑config.setProcessConfig(processConfig);//执行并生成newPojoExecute(config).execute();}常见问题文档乱码一代之后?MySQL:URLadded?characterEncoding=UTF-8Causedby:java.lang.NoSuchFieldError:VERSION_2_3_30?检查项目的freemarker依赖。这是版本太低造成的。只需将版本升级到2.3.30。java.lang.AbstractMethodError:oracle.jdbc.driver.T4CConnection.getSchema()Ljava/lang/String;这是oracle驱动版本低导致的。删除或屏蔽当前驱动版本,添加并升级驱动到以下版本:com.oracle.ojdbcojdbc819.3.0.0cn.easyprojectorai18n12.1.0.2.0MySQL数据库表列字段有说明,但生成的文档没有说明?只需将useInformationSchema=true添加到URL链接。java.lang.AbstractMethodError:com.mysql.jdbc.JDBC4Connection.getSchema()Ljava/lang/String;这是mysql驱动版本太低造成的,将mysql驱动版本升级到最新即可。