推荐一个数据库文档生成神器
点击上方蓝色字体,选择“标星公众号”
优质文章,第一时间送达
gitee地址:https://gitee.com/leshalv/screw
Gitee项目地址,可以直接去开源项目查看(推荐)
简介
在企业级开发中、我们经常会有编写数据库表结构文档的时间付出,从业以来,待过几家企业,关于数据库表结构文档状态:要么没有、要么有、但都是手写、后期运维开发,需要手动进行维护到文档中,很是繁琐、如果忘记一次维护、就会给以后工作造成很多困扰、无形中制造了很多坑留给自己和后人。
于是萌生了要自己写一个插件工具的想法,但由于自己前期在程序设计上没有很多造诣,且能力偏低,有想法并不能很好实现,随着工作阅历的增加,和知识的不断储备,终于在2020年的3月中旬开始进行编写。
4月上旬完成初版,想完善差不多在开源,但由于工作太忙,业余时间不足,没有在进行完善,到了6月份由于工作原因、频繁设计和更改数据库、经常使用自己写的此插件、节省了很多时间,解决了很多问题 ,在仅有且不多的业余时间中、进行开源准备,于2020年6月22日,开源,欢迎大家使用、建议、并贡献。
关于名字,想一个太难了,好在我这个聪明的小脑瓜灵感一现,怎么突出它的小,但重要呢?从小就学过雷锋的螺丝钉精神,摘自雷锋日记:虽然是细小的螺丝钉,是个细微的小齿轮,然而如果缺了它,那整个的机器就无法运转了,慢说是缺了它,即使是一枚小螺丝钉没拧紧,一个小齿轮略有破损,也要使机器的运转发生故障的...,感觉自己写的这个工具,很有这意味,虽然很小、但是开发中缺了它还不行,于是便起名为screw(螺丝钉)。
特点
简洁、轻量、设计良好
多数据库支持
多种格式文档
灵活扩展
支持自定义模板
数据库支持
MySQL
MariaDB
TIDB
Oracle
SqlServer
PostgreSQL
Cache DB(2016)
H2 (开发中)
DB2 (开发中)
HSQL (开发中)
SQLite(开发中)
瀚高(开发中)
达梦 (开发中)
虚谷 (开发中)
人大金仓(开发中)
文档生成支持
html
word
markdown
文档截图
html
word
markdwon
使用方式
普通方式
引入依赖
<dependency><groupId>cn.smallbun.screw</groupId><artifactId>screw-core</artifactId><version>${lastVersion}</version></dependency>
编写代码
/*** 文档生成*/
void documentGeneration() {//数据源HikariConfig hikariConfig = 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 = new HikariDataSource(hikariConfig);//生成配置EngineConfig engineConfig = EngineConfig.builder()//生成文件路径.fileOutputDir(fileOutputDir)//打开目录.openOutputDir(true)//文件类型.fileType(EngineFileType.HTML)//生成模板实现.produceType(EngineTemplateType.freemarker)//自定义文件名称.fileName("自定义文件名称").build();//忽略表ArrayList<String> ignoreTableName = new ArrayList<>();ignoreTableName.add("test_user");ignoreTableName.add("test_group");//忽略表前缀ArrayList<String> ignorePrefix = new ArrayList<>();ignorePrefix.add("test_");//忽略表后缀 ArrayList<String> ignoreSuffix = new ArrayList<>();ignoreSuffix.add("_test");ProcessConfig processConfig = ProcessConfig.builder()//指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置 //根据名称指定表生成.designatedTableName(new ArrayList<>())//根据表前缀生成.designatedTablePrefix(new ArrayList<>())//根据表后缀生成 .designatedTableSuffix(new ArrayList<>())//忽略表名.ignoreTableName(ignoreTableName)//忽略表前缀.ignoreTablePrefix(ignorePrefix)//忽略表后缀.ignoreTableSuffix(ignoreSuffix).build();//配置Configuration config = Configuration.builder()//版本.version("1.0.0")//描述.description("数据库设计文档生成")//数据源.dataSource(dataSource)//生成配置.engineConfig(engineConfig)//生成配置.produceConfig(processConfig).build();//执行生成new DocumentationExecute(config).execute();
}
Maven 插件
<build><plugins><plugin><groupId>cn.smallbun.screw</groupId><artifactId>screw-maven-plugin</artifactId><version>${lastVersion}</version><dependencies><!-- HikariCP --><dependency><groupId>com.zaxxer</groupId><artifactId>HikariCP</artifactId><version>3.4.5</version></dependency><!--mysql driver--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.20</version></dependency></dependencies><configuration><!--username--><username>root</username><!--password--><password>password</password><!--driver--><driverClassName>com.mysql.cj.jdbc.Driver</driverClassName><!--jdbc url--><jdbcUrl>jdbc:mysql://127.0.0.1:3306/xxxx</jdbcUrl><!--生成文件类型--><fileType>HTML</fileType><!--打开文件输出目录--><openOutputDir>false</openOutputDir><!--生成模板--><produceType>freemarker</produceType><!--文档名称 为空时:将采用[数据库名称-描述-版本号]作为文档名称--><fileName>测试文档名称</fileName><!--描述--><description>数据库文档生成</description><!--版本--><version>${project.version}</version><!--标题--><title>数据库文档</title></configuration><executions><execution><phase>compile</phase><goals><goal>run</goal></goals></execution></executions></plugin></plugins>
</build>
扩展模块
pojo生成功能
功能简介
pojo生成功能是基于screw延伸出的扩展模块,目前处于初步开发的状态。在日常的开发中,经过需求分析、建模之后,往往会先在数据库中建表,其次在进行代码的开发。那么pojo生成功能在这个阶段就可以帮助大家节省一些重复劳动了。
使用pojo生成功能可以直接根据数据库生成对应的java pojo对象。这样后续的修改,开发都会很方便。
数据库支持
MySQL
使用方式
引入依赖
<dependency><groupId>cn.smallbun.screw</groupId><artifactId>screw-extension</artifactId><version>${lastVersion}</version></dependency>
编写代码
/*** pojo生成*/
void pojoGeneration() {//数据源HikariConfig hikariConfig = 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 = new HikariDataSource(hikariConfig);ProcessConfig processConfig = ProcessConfig.builder()//指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置//根据名称指定表生成.designatedTableName(new ArrayList<>())//根据表前缀生成.designatedTablePrefix(new ArrayList<>())//根据表后缀生成.designatedTableSuffix(new ArrayList<>()).build();//设置生成pojo相关配置PojoConfiguration config = 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();
}
常见问题
生成后文档乱码?
MySQL:URL加入
?characterEncoding=UTF-8
。Caused by: java.lang.NoSuchFieldError: VERSION_2_3_30?
检查项目
freemarker
依赖,这是由于版本过低造成的,升级版本为2.3.30
即可。java.lang.AbstractMethodError: oracle.jdbc.driver.T4CConnection.getSchema()Ljava/lang/String;
这是因为oracle驱动版本过低造成的,删除或屏蔽目前驱动版本,驱动添加升级为以下版本:
<dependency><groupId>com.oracle.ojdbc</groupId><artifactId>ojdbc8</artifactId><version>19.3.0.0</version></dependency><dependency><groupId>cn.easyproject</groupId><artifactId>orai18n</artifactId><version>12.1.0.2.0</version></dependency>
MySQL数据库表和列字段有说明、生成文档没有说明?
URL链接加入
useInformationSchema=true
即可。java.lang.AbstractMethodError: com.mysql.jdbc.JDBC4Connection.getSchema()Ljava/lang/String;
这是因为mysql驱动版本过低造成的,升级mysql驱动版本为最新即可
—————END—————推荐阅读:
IDEA 永久注册码来了!!!
Nginx 这个功能就厉害了!
强烈推荐:一个比 Nginx 功能更强大的 Web 服务器
基于SpringBoot 的CMS系统,拿去开发企业官网真香
33 个 IDEA 最牛配置,写代码太爽了!
不要再封装各种Util工具类了,这个神级框架值得拥有!
最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。获取方式:关注公众号并回复 java 领取,更多内容陆续奉上。
明天见(。・ω・。)ノ♡
推荐一个数据库文档生成神器相关推荐
- unity mysql生成cexcel_【C#附源码】数据库文档生成工具支持(Excel+Html)
[2015] 很多时候,我们在生成数据库文档时,使用某些工具,可效果总不理想,不是内容不详细,就是表现效果一般般.很多还是word.html的.看着真是别扭.本人习惯用Excel,所以闲暇时,就简单的 ...
- 数据库文档生成工具V1.0
这是一款基于C#开发语言编写的数据库文档生成工具,主要实现了 SQlServer+MYsql 数据库表结构说明文档的生成,并且支持 SQLServer 数据库的备份功能,主要可以把数据库的表以及表的详 ...
- wsdl文档中的soap:address的生成规则_BAT大牛都在使用的数据库文档生成插件,不来看一下?...
一.概述 在企业级开发中.我们经常会有编写数据库表结构文档的时间付出,从业以来,待过几家企业,关于数据库表结构文档状态:要么没有.要么有.但都是手写.后期运维开发,需要手动进行维护到文档中,很是繁琐. ...
- postgre 生成数据库html文档_还在手动整理数据库文档?试试这个(螺丝钉)数据库文档生成工具...
简介 在企业级开发中.我们经常会有编写数据库表结构文档的时间付出,从业以来,待过几家企业,关于数据库表结构文档状态:要么没有.要么有.但都是手写.后期运维开发,需要手动进行维护到文档中,很是繁琐.如果 ...
- Word文档生成神器:开源项目poi.tl使用介绍
导航: Word文档生成神器:开源项目poi-tl使用介绍 一. 概述 1.1 适合的场景 1.2 poi-tl的优势 二. poi-tl实例演示: 2.1 使用poi-tl生成word文档 三. 更 ...
- 分享一款非常棒的数据库文档生成工具,可导出md、excel等格式
1.背景 因为要给朋友项目补数据库文档,文档中需要填写数据库表结构等信息. 找了一个开源的.非常棒的数据库文档生成工具,可以导出word.excel(可编辑).md等格式..亲测,很棒,分享给大家.. ...
- 数据库文档生成数据库脚本工具
数据库文档生成数据库脚本工具,txt->sql word文档: ---------------------------------------------------------- 图一 复制到 ...
- mysql 文档生成器_最好用的数据库文档生成工具
一 前言 本文介绍一些比较流行的数据库文档生成工具,什么是数据库文档? 其实在工作中进行项目交付的时候经常用到:简单来说数据库文档就是对整个数据库设计说明的文档,比如使用了哪个数据库,每张表的字段,类 ...
- 推荐一个免费文档搜索下载网站http://freedownloadbooks.net/
推荐一个免费文档搜索下载网站http://freedownloadbooks.net/
最新文章
- CentOS部署NetCore - 2. 安装NetCore SDK On CentOS
- CMD是什么?(命令行提示符)如何使用python在windows上操作CMD?(python执行命令行)os.syste[m](执行的命令)、os.popen(执行的命令)
- Another ORA-00600 internal error
- oracle biee 11g客户端连接OCI 10g/11g数据源时报错
- 运维linux脚本实例,Shell脚本使用示例
- 城市能源管理系统、实时监测、运行监测、负荷效应、预警管理、设备管理、设备入库、设备安装、设备检修、设备报废、设备查询、控制策略、系统集成、HTML/CSS/Bootstrap/jQuery/JS
- Linux操作系统:文件和目录命令
- Java基础知识强化之网络编程笔记22:Android网络通信之 Android常用OAuth登录(获取个人信息)...
- python爬虫 爬取网页图片
- 软件工程笔记四__实体联系图(ER图)
- 用这几种方式清理Mac缓存,你的Mac就不会卡了
- Apache CXF前端应用(Frontend)
- GitHub / 码云 Pages 打造个人在线简历
- 当“珊瑚虫”遇到腾讯
- Pytorch实现word2vec(Skip-gram训练方式)
- DataGridview单击某个单元格选中一行
- 英语考研语法--什么是英语句子?(刘晓艳--不就是语法和长难句吗)
- [hdu 6355] Fireflies
- Java求PI的几种方法
- 顺序队列的基本操作的实现及舞伴问题
热门文章
- 凹凸贴图(Bump Map)实现原理以及与法线贴图(Normal Map)的区别
- python爬虫热点项目—滑块验证码项目(以Bilili为例)
- tsp问题——遗传算法解决
- Windows中使用Termius
- Facebook广告效果数据获取
- 全球与中国网络连接视频门铃对讲机市场深度研究分析报告
- 【物理应用】大气辐射和透射率模型及太阳和月亮模型(Matlab代码实现)
- Python编程好不好学?入门难吗?
- fone出席CXO智库峰会,分享“老板需要什么样的全面预算?”
- CKPT,SMON,PMON,RECO,Dnnn