要验收项目了,要写数据库文档,一大堆表太费劲了,直接生成一个吧,本来想用个别人的轮子,网上看了几个,感觉效果不怎么好,自己动手写一个吧。抽空再把字典表补充进去就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");