java一键生成数据库说明文档html格式

要验收项目了,要写数据库文档,一大堆表太费劲了,直接生成一个吧,本来想用个别人的轮子,网上看了几个,感觉效果不怎么好,自己动手写一个吧。抽空再把字典表补充进去就OK了
先看效果:
目录快速导航
在这里插入图片描述
生成效果
在这里插入图片描述

关键代码

 try {String prefixTables = "sys_monitor_db_handle.selectDbTabUsedInfo";String prefixStructure = "sys_monitor_db_handle.selectDbClumInfo";String dbname="dbname";// 获取所有表名Map<String, Object> paramTables = new HashMap<>();paramTables.put("tableen", dbname);String sqlTables = SqlManage.getInstance().getSqlByid(paramTables, prefixTables);List<Map<String, Object>> tablesList = BaseDao.queryList(sqlTables);// 生成HTML文档StringBuilder htmlBuilder = new StringBuilder();String name="数据库说明文档";String level="2.0";String auth="wheart.cn";String date=ToolDateTime.getYYYYmmdd();generateHtmlHeader(htmlBuilder,name,level,auth,date);StringBuilder navBuilder = new StringBuilder();navBuilder.append("<nav><h2 id='mulu'>目录</h2><ul>\n");for (Map<String, Object> tableInfo : tablesList) {String tableName = (String) tableInfo.get("tableen");String tableNamecn = tableInfo.get("tabcn")+"";generateHtmlnav(navBuilder,tableName,tableNamecn);Map<String, Object> paramStructure = new HashMap<>();paramStructure.put("tableen", tableName);paramStructure.put("dbname", dbname);String sqlStructure = SqlManage.getInstance().getSqlByid(paramStructure, prefixStructure);List<Map<String, Object>> columnsList = BaseDao.queryList(sqlStructure);generateHtmlTable(htmlBuilder, tableName, tableNamecn, columnsList);}navBuilder.append("</ul></nav>\n"); // 结束导航列表和导航部分String conDivStart = "<div class=\"con\">";int conDivIndexStart = htmlBuilder.indexOf(conDivStart);htmlBuilder.insert(conDivIndexStart + conDivStart.length(), navBuilder.toString());generateHtmlFooter(htmlBuilder);writeHtmlToFile(htmlBuilder.toString(), name+"_"+auth+"_"+level+"_"+date+".html");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/878001.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Session Cookie Jwt Token常见web授权

基于分布式系统、同公司内、同一个 redis 作为存储&#xff0c;这个是目前主要的用法&#xff0c;去找开源框架都是这个逻辑&#xff1b;对外开放等使用参考 OAuth 2.0 能够标识出用户是谁&#xff0c;安全性相对高一些&#xff0c;就是好的方案。 Cookie Set 和 Get&#x…

Python3:多行文本内容转换为标准的cURL请求参数值

背景 在最近的工作中&#xff0c;经常需要处理一些接口请求的参数&#xff0c;参数来源形式很多&#xff0c;可能是Excel、知识库文档等&#xff0c;有些数据形式比较复杂&#xff0c;比如多行或者包含很多不同的字符&#xff0c;示例如下&#xff1a; **客服质检分析指引** …

【精选】分享9款AI毕业论文生成初稿题目网站

在当今学术研究领域&#xff0c;AI技术的应用日益广泛&#xff0c;尤其是在学术论文的撰写过程中。AI论文生成器的出现&#xff0c;极大地简化了学术写作流程&#xff0c;提高了写作效率。以下是9款推荐的AI毕业论文生成初稿的网站&#xff0c;它们各有特色&#xff0c;能够满足…

MFC工控项目实例之七点击下拉菜单弹出对话框

承接专栏《MFC工控项目实例之六CFile添加菜单栏》 1、在SEAL_PRESSUREDlg.h文件中添加代码 class CSEAL_PRESSUREDlg : public CDialog { ...afx_msg void OnTypeManage(); ... } 2、在SEAL_PRESSUREDlg.cpp文件中添加代码 BEGIN_MESSAGE_MAP(CSEAL_PRESSUREDlg, CDialog)//…

MySQL的源码安装及基本部署(基于RHEL7.9)

这里源码安装mysql的5.7.44版本 一、源码安装 1.下载并解压mysql , 进入目录: wget https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.44.tar.gz tar xf mysql-boost-5.7.44.tar.gz cd mysql-5.7.44/ 2.准备好mysql编译安装依赖: yum install cmake g…

数据结构:用栈实现队列(232)LeetCode

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元素 int peek() 返回队列开…

Python爬虫——简单网页抓取(实战案例)小白篇

Python 爬虫是一种强大的工具&#xff0c;用于从网页中提取数据。这里&#xff0c;我将通过一个简单的实战案例来展示如何使用 Python 和一些流行的库&#xff08;如 requests 和 BeautifulSoup&#xff09;来抓取网页数据。 实战案例&#xff1a;抓取一个新闻网站的头条新闻标…

Windows上传Linux文件行尾符转换

Windows上传Linux文件行尾符转换 1、Windows与Linux文件行尾符2、Windows与Linux文件格式转换 1、Windows与Linux文件行尾符 众所周知&#xff0c;Windows、Mac与Linux三种系统的文件行尾符不同&#xff0c;其中 Windows文件行尾符&#xff08;\r\n&#xff09;&#xff1a; L…

使用kafka改造分布式事务

文章目录 1、kafka确保消息不丢失&#xff1f;1.1、生产者端确保消息不丢失1.2、kafka服务端确保消息不丢失1.3、消费者确保正确无误的消费 2、生产者发送消息 KafkaService3、UserInfoServiceImpl -> login()4、service-account - > AccountListener.java 1、kafka确保消…

day31-测试之性能测试工具JMeter的功能概要、元件作用域和执行顺序

目录 一、JMeter的功能概要 1.1.文件目录介绍 1).bin目录 2).docs目录 3).printable_docs目录 4).lib目录 1.2.基本配置 1).汉化 2).主题修改 1.3.基本使用流程 二、JMeter元件作用域和执行顺序 2.1.名称解释 2.2.基本元件 2.3.元件作用域 1).核心 2).提示 3).作用域的原则 2.…

常用PHP JS MySQL 常用方法记录

常用PHP JS MySQL 常用方法记录 MySQL 1&#xff09;查询 Select 1.1&#xff09;FROM_UNIXTIME 根据创建时间 时间戳 筛选 WHEREFROM_UNIXTIME(kl.created_at) BETWEEN 2024-08-01 00:00:01 AND 2024-08-08 23:59:59 1.2&#xff09;DATE_FORMAT 格式化时间戳 DATE_FOR…

Redis 实现哨兵模式

目录 1 哨兵模式介绍 1.1 什么是哨兵模式 1.2 sentinel中的三个定时任务 2 配置哨兵 2.1 实验环境 2.2 实现哨兵的三条参数&#xff1a; 2.3 修改配置文件 2.3.1 MASTER 2.3.2 SLAVE 2.4 将 sentinel 进行备份 2.5 开启哨兵模式 2.6 故障模拟 3 在整个架构中可能会出现的问题 …

go中 panicrecoverdefer机制

go的defer机制-CSDN博客 常见panic场景 数组或切片越界&#xff0c;例如 s : make([]int, 3); fmt.Println(s[5]) 会引发 panic: runtime error: index out of range空指针调用&#xff0c;例如 var p *Person; fmt.Println(p.Name) 会引发 panic: runtime error: invalid m…

Android Init Language

Android Init Language 安卓初始化语言&#xff0c;是一种用于配置和管理 Android 系统服务的专用脚本语言。主要用于编写 .rc 文件&#xff08;比如我们熟知的init.rc文件&#xff09;&#xff0c;这些文件在系统启动时由 init 进程读取和执行&#xff0c;从而设置和启动系统服…

Mako 模板语言

Mako 模板语言 Mako的哲学:Python is great scripting language ,don’t reinvent the wheel, your template can handle it !, api非常简单, ####入门 Template类是创建模板和渲染模板的核心类 from mako.template import Template mytemplate Template("hello world&…

网络通信tcp

一、udp案例 二、基于tcp: tcp //c/s tcp 客户端: 1.建立连接 socket bind connect 2.通信过程 read write close tcp服务器: 1.建立连接 socket bind listen accept 2.通信过程 read write close connect函数 int connect(int sockfd, con…

Git克隆仓库太大导致拉不下来的解决方法 fatal: fetch-pack: invalid index-pack output

一般这种问题是因为某个文件/某个文件夹/某些文件夹过大导致整个项目超过1G了导致的 试过其他教程里的设置depth为1,也改过git的postBuffer,都不管用 最后还是靠克隆指定文件夹这种方式成功把项目拉下来 1. Git Bash 输入命令 git clone --filterblob:none --sparse 项目路径…

探索Unity3D URP后处理在UI控件Image上的应用

探索Unity3D URP后处理在UI控件Image上的应用 前言初识URP配置后处理效果将后处理应用于UI控件方法一&#xff1a;自定义Shader方法二&#xff1a;RenderTexture的使用 实践操作步骤一&#xff1a;创建RenderTexture步骤二&#xff1a;UI渲染至RenderTexture步骤三&#xff1a;…

视频如何转gif?分享这几款软件!

在这个快节奏、高创意的互联网时代&#xff0c;动图&#xff08;GIF&#xff09;以其独特的魅力成为了社交媒体、聊天软件中的宠儿。它们不仅能瞬间抓住眼球&#xff0c;还能让信息传递更加生动有趣。然而&#xff0c;你是否曾为如何将精彩瞬间从视频中精准截取并转换成GIF而苦…

富士变频器主板EP-3611E-C EP-3611E-C-Z2

富士变频器主板EP-3611E-C EP-3611E-C-Z2 ‌富士变频器主板EP-3611E-C EP-3611E-C-Z2‌是富士电机株式会社研发、生产、销售的世界知名变频器品牌之一的一部分。富士变频器&#xff0c;全称为“富士交流变频调速器”&#xff0c;主要用于三相异步交流电机&#xff0c;通过改变…