1。引言在企业级开发中,我们经常会花时间编写数据库表结构文档。由于我们在几家公司工作过,数据库表结构文档的现状:要么没有,要么有,但是手写和后期运维开发都需要手动维护进文档,非常繁琐。如果忘记维护一次,会给以后的工作带来很多的麻烦,给自己和后代制造很多的坑,所以产生了自己写一个插件工具的想法2。功能简单、轻巧且设计精良。多个数据库支持多种格式的文件。灵活扩展支持自定义模板3.数据库支持[x]MySQL[x]MariaDB[x]TIDB[x]Oracle[x]SqlServer[x]PostgreSQL[x]CacheDB(2016)[]H2(开发中)[]DB2(开发中)[]HSQL(开发中)[]SQLite(开发中)[]高度(开发中)中)[]大梦(开发中)[]虚谷(开发中)[]仁达金仓(开发中)4.文档生成支持[x]html[x]word[x]markdown5,文档截图htmlwordmarkdwon6,使用方式以正常方式引入依赖cn.smallbun.screwscrew-core${lastVersion}编写代码/***DocumentGeneration*/voiddocumentGeneration(){//数据源HikariConfighikariConfig=newHikariConfig();hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/database");hikariConfig.setUsername("root");光科nfig.setPassword("密码");//设置获取表格备注信息hikariConfig.addDataSourceProperty("useInformationSchema","true");hikariConfig.setMinimumIdle(2);hikariConfig.setMaximumPoolSize(5);DataSourcedataSource=newHikariDataSource(hikariConfig);//生成配置EngineConfigengineConfig=EngineConfig.builder()//生成文件路径.fileOutputDir(fileOutputDir)//打开目录.openOutputDir(true)//文件类型.fileType(EngineFileType.HTML)//生成模板实现.produceType(EngineTemplateType.freemarker)//自定义文件名.fileName("自定义文件名").build();//忽略表ArrayListignoreTableName=newArrayList<>();ignoreTableName.add("test_user");ignoreTableName.add("test_group");//忽略表前缀ArrayListignorePrefix=newArrayList<>();ignorePrefix.add("test_");//忽略表后缀ArrayList;ignoreSuffix=newArrayList<>();ignoreSuffix.add("_test");ProcessConfigprocessConfig=ProcessConfig.builder()//指定生成逻辑,当指定表、指定表前缀、指定表后缀存在时,将生成指定表的表,其余表不生成,跳过忽略表配置//根据指定表名生成.designatedTableName(newArrayList<>())//根据表前缀生成.DesignatedTablePrefix(newArrayList<>())//根据表后缀生成.designatedTableSuffix(newArrayList<>())//忽略表名.ignoreTableName(ignoreTableName)//忽略表前缀.ignoreTablePrefix(ignorePrefix)//忽略表后缀.ignoreTableSuffix(ignoreSuffix).build();//configurationConfigurationconfig=Configuration.builder()//version.version("1.0.0")//description.description("数据库设计文档生成")//datasource.dataSource(dataSource)//生成configuration.engineConfig(engineConfig)//生成配置.produceConfig(processConfig).build();//执行并生成新的DocumentationExecute(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测试文件名数据库文件生成${项目.版本}数据库文档compilerun7.扩展模块pojo生成函数功能介绍pojo生成函数是基于screw的扩展的一个扩展模块,目前处于初步开发阶段日常开发中,需求分析建模后,往往先在数据库中建表,然后在数据库中建表代码开发。那么pojo生成功能可以帮你在这个阶段省去一些重复劳动。使用pojo生成函数,直接根据数据库生成对应的javapojo对象。这样,后续的修改和开发就会很方便。数据库支持[x]MySQL使用方法引入依赖cn.smallbun.screwscrew-extension${lastVersion}编写代码/***pojogeneration*/voidpojoGeneration(){//数据源HikariConfighikariConfig=newHikariConfig();hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/screw");hikariConfig.setUsername("螺丝钉");hikariConfig.setPassword("螺丝钉");//设置获取表格备注信息hikariConfig.addDataSourceProperty("useInformationSchema","true");hikariConfig.setMinimumIdle(2);hikariConfig.setMaximumPoolSize(5);数据源dataSource=newHikariDataSource(hikariConfig);ProcessConfigprocessConfig=ProcessConfig.builder()//指定生成逻辑,当指定表存在时,指定表前缀,当指定表后缀时,会生成指定表,其余表不会生成,表配置将被跳过。//根据名称指定的表生成.designatedTableName(newArrayList<>())//根据表prefix生成designatedTablePrefix(newArrayList<>())//根据表suffix生成designatedTableSuffix(newArrayList<>()).build();//设置生成pojo相关配置PojoConfigurationconfig=newPojoConfiguration();//设置文件存放路径config.setPath("/cn/smallbun/screw/");//设置包名config.setPackageName("cn.smallbun.screw");//设置是否使用lombokconfig.setUseLombok(false);//设置数据源config.setDataSource(dataSource);//设置命名策略config.setNameStrategy(newHumpNameStrategy());//设置表过滤逻辑config.setProcessConfig(processConfig);//执行并生成newPojoExecute(config).execute();}8.常见问题文档生成后出现乱码?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驱动版本升级到最新即可。项目地址:https://gitee.com/leshalv/screw近期热点文章推荐:1.1000+Java面试题及答案(2022最新版)2.厉害了!Java协程来了。..3.SpringBoot2.x教程,太全面了!4.不要用爆破爆满画面,试试装饰者模式,这才是优雅的方式!!5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!