点击上方蓝色字体,选择“标星公众号”
优质文章,第一时间送达
gitee地址:https://gitee.com/leshalv/screw
Gitee项目地址,可以直接去开源项目查看(推荐)
简介
在企业级开发中、我们经常会有编写数据库表结构文档的时间付出,从业以来,待过几家企业,关于数据库表结构文档状态:要么没有、要么有、但都是手写、后期运维开发,需要手动进行维护到文档中,很是繁琐、如果忘记一次维护、就会给以后工作造成很多困扰、无形中制造了很多坑留给自己和后人。
于是萌生了要自己写一个插件工具的想法,但由于自己前期在程序设计上没有很多造诣,且能力偏低,有想法并不能很好实现,随着工作阅历的增加,和知识的不断储备,终于在2020年的3月中旬开始进行编写。
4月上旬完成初版,想完善差不多在开源,但由于工作太忙,业余时间不足,没有在进行完善,到了6月份由于工作原因、频繁设计和更改数据库、经常使用自己写的此插件、节省了很多时间,解决了很多问题 ,在仅有且不多的业余时间中、进行开源准备,于2020年6月22日,开源,欢迎大家使用、建议、并贡献。
关于名字,想一个太难了,好在我这个聪明的小脑瓜灵感一现,怎么突出它的小,但重要呢?从小就学过雷锋的螺丝钉精神,摘自雷锋日记:虽然是细小的螺丝钉,是个细微的小齿轮,然而如果缺了它,那整个的机器就无法运转了,慢说是缺了它,即使是一枚小螺丝钉没拧紧,一个小齿轮略有破损,也要使机器的运转发生故障的...,感觉自己写的这个工具,很有这意味,虽然很小、但是开发中缺了它还不行,于是便起名为screw(螺丝钉)。
特点
简洁、轻量、设计良好
多数据库支持
多种格式文档
灵活扩展
支持自定义模板
数据库支持
文档生成支持
文档截图
![](https://img8.php1.cn/3cdc5/15483/78c/7ec5dd04994188ab.png)
![](https://img8.php1.cn/3cdc5/15483/78c/07162c023b8fa3eb.png)
![](https://img8.php1.cn/3cdc5/15483/78c/498e4c92a94522a3.png)
![](https://img8.php1.cn/3cdc5/15483/78c/09c5e110fd211877.png)
![](https://img8.php1.cn/3cdc5/15483/78c/bf8270a3afb112de.png)
使用方式
普通方式
cn.smallbun.screwscrew-core${lastVersion}
/*** 文档生成*/
void documentGeneration() {//数据源HikariConfig hikariConfig &#61; new HikariConfig();hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/database");hikariConfig.setUsername("root");hikariConfig.setPassword("password");//设置可以获取tables remarks信息hikariConfig.addDataSourceProperty("useInformationSchema", "true");hikariConfig.setMinimumIdle(2);hikariConfig.setMaximumPoolSize(5);DataSource dataSource &#61; new HikariDataSource(hikariConfig);//生成配置EngineConfig engineConfig &#61; EngineConfig.builder()//生成文件路径.fileOutputDir(fileOutputDir)//打开目录.openOutputDir(true)//文件类型.fileType(EngineFileType.HTML)//生成模板实现.produceType(EngineTemplateType.freemarker)//自定义文件名称.fileName("自定义文件名称").build();//忽略表ArrayList ignoreTableName &#61; new ArrayList<>();ignoreTableName.add("test_user");ignoreTableName.add("test_group");//忽略表前缀ArrayList ignorePrefix &#61; new ArrayList<>();ignorePrefix.add("test_");//忽略表后缀 ArrayList ignoreSuffix &#61; new ArrayList<>();ignoreSuffix.add("_test");ProcessConfig processConfig &#61; ProcessConfig.builder()//指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时&#xff0c;将生成指定表&#xff0c;其余表不生成、并跳过忽略表配置 //根据名称指定表生成.designatedTableName(new ArrayList<>())//根据表前缀生成.designatedTablePrefix(new ArrayList<>())//根据表后缀生成 .designatedTableSuffix(new ArrayList<>())//忽略表名.ignoreTableName(ignoreTableName)//忽略表前缀.ignoreTablePrefix(ignorePrefix)//忽略表后缀.ignoreTableSuffix(ignoreSuffix).build();//配置Configuration config &#61; Configuration.builder()//版本.version("1.0.0")//描述.description("数据库设计文档生成")//数据源.dataSource(dataSource)//生成配置.engineConfig(engineConfig)//生成配置.produceConfig(processConfig).build();//执行生成new 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测试文档名称数据库文档生成${project.version}compilerun
扩展模块
pojo生成功能
功能简介
pojo生成功能是基于screw延伸出的扩展模块,目前处于初步开发的状态。在日常的开发中,经过需求分析、建模之后,往往会先在数据库中建表,其次在进行代码的开发。那么pojo生成功能在这个阶段就可以帮助大家节省一些重复劳动了。
使用pojo生成功能可以直接根据数据库生成对应的java pojo对象。这样后续的修改&#xff0c;开发都会很方便。
数据库支持
使用方式
cn.smallbun.screwscrew-extension${lastVersion}
/*** pojo生成*/
void pojoGeneration() {//数据源HikariConfig hikariConfig &#61; new HikariConfig();hikariConfig.setDriverClassName("com.mysql.cj.jdbc.Driver");hikariConfig.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/screw");hikariConfig.setUsername("screw");hikariConfig.setPassword("screw");//设置可以获取tables remarks信息hikariConfig.addDataSourceProperty("useInformationSchema", "true");hikariConfig.setMinimumIdle(2);hikariConfig.setMaximumPoolSize(5);DataSource dataSource &#61; new HikariDataSource(hikariConfig);ProcessConfig processConfig &#61; ProcessConfig.builder()//指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时&#xff0c;将生成指定表&#xff0c;其余表不生成、并跳过忽略表配置//根据名称指定表生成.designatedTableName(new ArrayList<>())//根据表前缀生成.designatedTablePrefix(new ArrayList<>())//根据表后缀生成.designatedTableSuffix(new ArrayList<>()).build();//设置生成pojo相关配置PojoConfiguration config &#61; new PojoConfiguration();//设置文件存放路径config.setPath("/cn/smallbun/screw/");//设置包名config.setPackageName("cn.smallbun.screw");//设置是否使用lombokconfig.setUseLombok(false);//设置数据源config.setDataSource(dataSource);//设置命名策略config.setNameStrategy(new HumpNameStrategy());//设置表过滤逻辑config.setProcessConfig(processConfig);//执行生成new PojoExecute(config).execute();
}
常见问题
生成后文档乱码&#xff1f;
MySQL&#xff1a;URL加入?characterEncoding&#61;UTF-8
。
Caused by: java.lang.NoSuchFieldError: VERSION_2_3_30&#xff1f;
检查项目freemarker
依赖&#xff0c;这是由于版本过低造成的&#xff0c;升级版本为2.3.30
即可。
java.lang.AbstractMethodError: oracle.jdbc.driver.T4CConnection.getSchema()Ljava/lang/String;
这是因为oracle驱动版本过低造成的&#xff0c;删除或屏蔽目前驱动版本&#xff0c;驱动添加升级为以下版本&#xff1a;
com.oracle.ojdbcojdbc819.3.0.0cn.easyprojectorai18n12.1.0.2.0
MySQL数据库表和列字段有说明、生成文档没有说明&#xff1f;
URL链接加入useInformationSchema&#61;true
即可。
java.lang.AbstractMethodError: com.mysql.jdbc.JDBC4Connection.getSchema()Ljava/lang/String;
这是因为mysql驱动版本过低造成的&#xff0c;升级mysql驱动版本为最新即可
—————END—————推荐阅读&#xff1a;
IDEA 永久注册码来了&#xff01;&#xff01;&#xff01;
Nginx 这个功能就厉害了&#xff01;
强烈推荐&#xff1a;一个比 Nginx 功能更强大的 Web 服务器
基于SpringBoot 的CMS系统&#xff0c;拿去开发企业官网真香
33 个 IDEA 最牛配置&#xff0c;写代码太爽了&#xff01;
不要再封装各种Util工具类了&#xff0c;这个神级框架值得拥有&#xff01;
![](https://img8.php1.cn/3cdc5/15483/78c/955f34fa8af474b4.jpeg)
最近面试BAT&#xff0c;整理一份面试资料《Java面试BAT通关手册》&#xff0c;覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。获取方式&#xff1a;关注公众号并回复 java 领取&#xff0c;更多内容陆续奉上。
明天见(&#xff61;&#xff65;ω&#xff65;&#xff61;)&#xff89;♡