热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

数据库文档展示工具

实用工具:数据库文档展示工具简介数据库文档展示工具(databasedoc),又叫数据库注释浏览工具,是一


实用工具:数据库文档展示工具

简介

数据库文档展示工具(database doc),又叫数据库注释浏览工具,是一个简单的数据库展示各个字段注释的开源工具。在日常开发工作中,您有否这样的体验?


  • 想给前端开发或者其他人员浏览数据库结构、表详情等的信息,出于管理的原因,却又不想告诉他们数据库账号、密码;
  • 要生成数据库结构文档或报表,不知有什么好工具。即使生成了,结构变动了,又要再生成一次,——有一个同步的问题
  • 根据表结构快速生成 Java 实体

如果有上述场景,那么数据库文档展示工具就是为您而设的。该工具如下截图所示,



example2

它包含下面的功能。


  • 读取数据库的元数据(Meta data)转化为 HTML 呈现。
  • 支持多数据源切换。当前仅支持 MySQL 数据库
  • 提供一个简单的代码生成器,可快速地将某张表转化为 JavaBean
  • Java Spring 项目,依赖少,方便集成

在线演示地址请点击 https://framework.ajaxjs.com/demo/database-doc/。


使用方法


多数据源管理





生成 Java Bean




批量下载 Java Bean,打包整个库的 Bean 文件转换 zip 包下载。





集成方法

提示:该工具使用“前后端分离”架构,如果单纯只为展示数据库文档,那么只提供前端 UI 读取的 JSON 数据即可,不需要后台服务。看阁下需要,当然那 JSON 要符合特定的格式。

如果你希望管理多个数据库的库或数据源,就要涉及 SQL (存储起来)和 Java 后台服务。请接着继续看如何集成。


添加依赖

该工具不是一个独立运行的工程,而是提供 jar 包集成到你的项目中。故你需依赖下面的 Maven:

<dependency>
<groupId>com.ajaxjsgroupId>
<artifactId>ajaxjs-frameworkartifactId>
<version>1.0.5version>
dependency>

这个 jar 包通过 Servlet 3.0 打包技术&#xff0c;将前端都集成进去 jar 包里了。


创建数据库

创建数据库&#xff0c;仅需一张表。新建数据源表 adp_datasource 如下&#xff1a;

CREATE TABLE &#96;adp_datasource&#96; (
&#96;id&#96; INT(10) NOT NULL AUTO_INCREMENT COMMENT &#39;主键 id&#xff0c;自增&#39;,
&#96;name&#96; VARCHAR(45) NOT NULL COMMENT &#39;名称&#39; COLLATE &#39;utf8mb4_unicode_ci&#39;,
&#96;url_dir&#96; VARCHAR(50) NOT NULL COMMENT &#39;数据源编码&#xff0c;唯一&#39; COLLATE &#39;utf8mb4_unicode_ci&#39;,
&#96;type&#96; VARCHAR(50) NOT NULL DEFAULT &#39;&#39; COMMENT &#39;数据源类型&#39; COLLATE &#39;utf8mb4_unicode_ci&#39;,
&#96;url&#96; VARCHAR(255) NOT NULL COMMENT &#39;连接地址&#39; COLLATE &#39;utf8mb4_unicode_ci&#39;,
&#96;username&#96; VARCHAR(255) NULL DEFAULT NULL COMMENT &#39;登录用户&#39; COLLATE &#39;utf8mb4_unicode_ci&#39;,
&#96;password&#96; VARCHAR(255) NULL DEFAULT NULL COMMENT &#39;登录密码&#39; COLLATE &#39;utf8mb4_unicode_ci&#39;,
&#96;connect_ok&#96; TINYINT(1) NULL DEFAULT NULL COMMENT &#39;是否连接验证成功&#39;,
&#96;stat&#96; TINYINT(3) NULL DEFAULT NULL COMMENT &#39;数据字典&#xff1a;状态&#39;,
&#96;cross_db&#96; TINYINT(1) NULL DEFAULT NULL COMMENT &#39;是否跨库&#39;,
&#96;uid&#96; BIGINT(19) NULL DEFAULT NULL COMMENT &#39;唯一 id&#xff0c;通过 uuid 生成不重复 id&#39;,
&#96;creator&#96; VARCHAR(50) NULL DEFAULT NULL COMMENT &#39;创建人名称&#xff08;可冗余的&#xff09;&#39; COLLATE &#39;utf8mb4_unicode_ci&#39;,
&#96;creator_id&#96; INT(10) NULL DEFAULT NULL COMMENT &#39;创建人 id&#39;,
&#96;create_date&#96; DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT &#39;创建日期&#39;,
&#96;updater&#96; VARCHAR(50) NULL DEFAULT NULL COMMENT &#39;修改人名称&#xff08;可冗余的&#xff09;&#39; COLLATE &#39;utf8mb4_unicode_ci&#39;,
&#96;updater_id&#96; INT(10) NULL DEFAULT NULL COMMENT &#39;修改人 id&#39;,
&#96;update_date&#96; DATETIME NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT &#39;修改日期&#39;,
PRIMARY KEY (&#96;id&#96;) USING BTREE,
UNIQUE INDEX &#96;id_UNIQUE&#96; (&#96;id&#96;) USING BTREE
)
COMMENT&#61;&#39;数据源&#39;

配置 API

Java API 部分&#xff0c;主要分为数据源本身的 CRUD 服务&#xff0c;和切换数据源产生文档 JSON 这么两个部分。我们的 API 设计风格即是&#xff0c;类库提供抽象基类&#xff0c;让用户继承它&#xff0c;并提供相关的参数配置。
具体来说就是你要复制下面两个类到你的项目中&#xff0c;并适当修改配置。第一个是DataSourceController&#xff0c;数据源的 CRUD 由这个控制器来处理&#xff08;这是一个标准的 Spring MVC 控制器&#xff09;&#xff1a;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ajaxjs.data_service.controller.BaseDataSourceController;
&#64;RestController
&#64;RequestMapping("/data_service/datasource") // 这个接口地址不能自定义了&#xff0c;否则前端要跟着改
public class DataSourceController extends BaseDataSourceController {
// 配置表名。注意你的数据连接&#xff08;一般是连接字符串&#xff09;如果不指定库名&#xff08;为了跨库&#xff09;&#xff0c;则要添加上完整的库名
final static String TABLE_NAME &#61; "aj_base.adp_datasource";
&#64;Override
protected String getTableName() {
return TABLE_NAME;
}
/*
返回数据库连接。当前的例子从 Spring IOC 返回 DataSource 再得到 Connection&#xff0c;现实中可以按照你的注入方式得到 Connection
*/

&#64;Override
protected Connection getConnection() {
DataSource ds &#61; DiContextUtil.getBean(DataSource.class);
try {
return ds.getConnection();
} catch (SQLException e) {
return null;
}
}
}

当前配置有两个,分别对应两个 Java 抽象的方法&#xff1a;一个是配置表名&#xff0c;另外一个是配置数据库的连接。


配置 MakeDbDocController

生成数据库信息的 JSON&#xff0c;用于显示数据库文档。

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ajaxjs.database_meta.BaseMakeDbDocController;
&#64;RestController
&#64;RequestMapping("/make_database_doc") // 这个接口地址不能自定义了&#xff0c;否则前端要跟着改
public class MakeDbDocController extends BaseMakeDbDocController {
}

使用答疑

  • 这个中原理是什么&#xff1f;

很简单&#xff0c;JDBC API 就有强大的数据库元数据获取能力。JDBC MetaData 一种方式是遍历各字段信息。但这种方式通用性不强&#xff0c;依赖于 MySQL&#xff0c;换别的数据库不一定。
另外一种方式就是获取 CREATE DDL&#xff08;本工具使用的方式&#xff09;&#xff0c;解析这个 DDL 通过开源 SQL 解析工具 com.github.jsqlparser 完成。最后一股脑把所有信息生成 JSON 给 UI。

前端基于 Vue2/iView 搞定&#xff0c;没啥难度&#xff0c;就是把那个大 JSON 渲染 UI 出来。


  • 只支持 Spring Boot 吗&#xff1f;

不是&#xff0c;老系统的 Spring MVC 也行。原生 Servlet 行不行&#xff1f;抱歉&#xff0c;不行哦~


  • 源码在哪里&#xff1f;

前端在 https://gitee.com/sp42_admin/ajaxjs/tree/master/aj-ui-widget/database-doc &#xff0c;后端其实是 AJ Framework&#xff0c;具体部分在 1、2。


  • 如何打印&#xff1f;

左侧的菜单中&#xff0c;右键鼠标打开新的浏览器创建&#xff0c;这是完成页面&#xff0c;直接打印。


  • 如何导出 PDF?

参考“打印”&#xff0c;选择 PDF 格式打印到文件。


  • 我不想任何人可以访问页面&#xff0c;怎么加用户登录、验证&#xff1f;

本工具不考虑这方面问题。如同上述集成方式&#xff0c;不直接提供 Controller&#xff0c;而是让你去继承它&#xff0c;至于如何配置用户身份识别&#xff0c;悉随尊便&#xff0c;加过滤器、拦截器都行&#xff0c;是你的事~

提示&#xff1a;简单点搞个 HTTP Basic 认证即可&#xff0c;安全性高点就 HTTP Digest。


  • 有否计划其他数据库&#xff0c;如 SQL Server?

很可能不会&#xff0c;精力有限&#xff0c;除非……







推荐阅读
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • MySQL 5.7 学习指南:SQLyog 中的主键、列属性和数据类型
    本文介绍了 MySQL 5.7 中主键(Primary Key)和自增(Auto-Increment)的概念,以及如何在 SQLyog 中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。 ... [详细]
  • 浅析python实现布隆过滤器及Redis中的缓存穿透原理_python
    本文带你了解了位图的实现,布隆过滤器的原理及Python中的使用,以及布隆过滤器如何应对Redis中的缓存穿透,相信你对布隆过滤 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 在处理数据库中所有用户表的彻底清除时,目前尚未发现单一命令能够实现这一目标。因此,需要采用一种较为繁琐的方法来逐个删除相关表及其结构。具体操作可以通过编写PL/SQL脚本来实现,该脚本将动态生成并执行删除表的SQL语句。尽管这种方法相对复杂,但在缺乏更简便手段的情况下,仍是一种有效的解决方案。未来或许可以通过数据库管理工具或更高版本的数据库系统提供更简洁的处理方式。 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • Docker 环境下 MySQL 双主同步配置指南
    本文介绍了如何在 Docker 环境中配置 MySQL 的双主同步,包括目录结构的创建、配置文件的编写、容器的创建与设置以及最终的验证步骤。 ... [详细]
  • malloc 是 C 语言中的一个标准库函数,全称为 memory allocation,即动态内存分配。它用于在程序运行时申请一块指定大小的连续内存区域,并返回该区域的起始地址。当无法预先确定内存的具体位置时,可以通过 malloc 动态分配内存。 ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 本文讨论了在进行 MySQL 数据迁移过程中遇到的所有 .frm 文件报错的问题,并提供了详细的解决方案和建议。 ... [详细]
  • 数据类型和操作数据表2.1MySQL类型之整型2.2MySQL数据类型之浮点型2.3日期时间型DATE1支持时间:1000年1月1日~9999年12月31日DATETIME ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
author-avatar
缺少小女人的温柔
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有