「网赚学习」 程序生产数据库文档-冷门项目

本文最后更新于2020年7月17日,已超过71天没有更新,如果文章内容失效,请反馈给我们,谢谢!

摘要

一般所有的项目都需要数据库设计文档,对于表不多的可以编辑word文档,自己写,但对于表很多,字段很多的数据库,这时候写设计文档就很麻烦,楼主就是遇到这个问题,项目70张表...

 

本站长期更新如何网赚以及网赚技巧相关教程

同时本站也是网赚论坛大全,会给大家带来网赚钱最多是什么网相关项目

本站内容好好研究,轻轻松松做出月入过万的副业


正文:

 

一般所有的项目都需要数据库设计文档,对于表不多的可以编辑word文档,自己写,但对于表很多,字段很多的数据库,这时候写设计文档就很麻烦,楼主就是遇到这个问题,项目70张表,一个个写到文档里是在麻烦,所以就像有没有可以通过程序生成。

具体思路

  • 通过jdbc获取所有的表名
  • 然后获取所有表的字段描述
  • 通过FreeMarker模版文件来生成word

注:首先通过jdbc连接你要生成word文档的数据库,怎么连接网上都有,这个不在这里多介绍。

通过jdbc获取所有的表名

  • 可以使用
show tables

这个方法获取到库下所有的表,但是有时候可能需要表的注释,那就用另外一条语句

select table_name,table_comment from information_schema.tables where table_schema = 'TABLE_ACHEMA' //TABLE_ACHEMA就是数据库名

这里就直接使用executeQuery()方法就行:

        result = stmt.executeQuery("select table_name,table_comment from information_schema.tables where table_schema = 'pension_service'"); 
while (result.next()){
String name = result.getString(1);//表名
String comment = result.getString(2);//表注释
Table table=new Table();
table.setName(name);
table.setComment(comment);
tables.add(table);
}

获取到后可以放到自己写的一个实体类自增字段 英文,作为FreeMarker模版文件的数据源

方法和上面一样

SQL:

select ORDINAL_POSITION,COLUMN_NAME,COLUMN_TYPE,EXTRA,COLUMN_COMMENT from information_schema.columns where table_schema ='TABLE_ACHEMA' and table_name = 'TABLE_NAME' "//TABLE_ACHEMA就是数据库名  TABLE_NAME表明表名

// ORDINAL_POSITION:列标识号。
// COLUMN_NAME:列名(字段名称)。
// COLUMN_TYPE:数据类型。
// EXTRA:额外信息(例如:auto_increment)
// COLUMN_NAME:列名(字段名称)。
// COLUMN_COMMENT:列注释

information_schema.columns 里存放了所有的字段的信息,这边可以自己自定义取哪些信息.

Word 文档模板:普通的doc、docx都是二进制文件,操作起来比较麻烦,那么我们可以采用变通的方式自增字段 英文,用word 的xml格式。

可以自己先在文档里做一个自己想要的表样式 例如:

然后另存为,选择xml格式

然后打开之后看一下,

不要被这么多代码恐吓到,仔细观察就可以找到word里的表格在xml怎么表示了,找到之后就可以生成我们所需要的模版文件,加上

 <#list tables as table>//表循环
...
<#list table.columns as col>//表字段循环
...
</#list>
..
</#list> 

在这边上传一个我这边用的模版供大家参考:

link

有了模版就可以直接生成文档了:代码:

public class WordHandler {
private Configuration configuration = null;
public WordHandler() {
configuration = new Configuration();
configuration.setDefaultEncoding("UTF-8");
}
public void data2word( Map<String,Object> data) {
// 设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以servlet,classpath,数据库装载,
// 这里我们的模板是放在org.cnzjw.template包下面
configuration.setClassForTemplateLoading(this.getClass(),
"/");
Template t = null;
try {
// word.ftl为要装载的模板
t = configuration.getTemplate("table.ftl");
} catch (IOException e) {
e.printStackTrace();
}
// 输出文档路径及名称
File outFile = new File("/Users/gengqiang/Desktop/table.doc");
Writer out = null;
try {
out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(outFile)));
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
try {
t.process(data, out);
} catch (TemplateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public  void test() throws Exception {
WordHandler wh = new WordHandler();
List<Table> tables=TableHandler.getTables();//获取表结构数据
Map<String,Object> data=new HashMap<String,Object>();
data.put("tables",tables);
wh.data2word(data);
}
}

2个实体类:

package com.coderqiang.tabledoc.entity;
/**
* Created by gengqiang on 2017/6/27.
*/
public class Column {
private Integer index;
private String name;
private String dataType;
private String  constraint;
private String comment;
public Integer getIndex() {
return index;
}
public void setIndex(Integer index) {
this.index = index;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDataType() {
return dataType;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
public String getConstraint() {
return constraint;
}
public void setConstraint(String constraint) {
this.constraint = constraint;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
@Override
public String toString() {
return "Column{" +
"index=" + index +
", name='" + name + ''' +
", dataType='" + dataType + ''' +
", constraint='" + constraint + ''' +
", comment='" + comment + ''' +
'}';
}
}
package com.coderqiang.tabledoc.entity;
import java.util.List;
/**
* Created by gengqiang on 2017/6/27.
*/
public class Table {
private String name;
private String comment;
private List<Column> columns;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
public List<Column> getColumns() {
return columns;
}
public void setColumns(List<Column> columns) {
this.columns = columns;
}
@Override
public String toString() {
return "Table{" +
"name='" + name + ''' +
", comment='" + comment + ''' +
", columns=" + columns +
'}';
}
}

获取表结构数据:

转载请注明:太白网赚平台 » 「网赚学习」 程序生产数据库文档

如果心胸不似海,又怎能有海一样的事业。 

网赚58:专注互联网冷门项目,紧跟最新最热创业信息,分享经验心得,揭秘套路,是网赚客的聚集地,主要项目有高回报项目和薅羊毛活动

好物推荐


网赚58-专注互联网冷门项目
  • 风险提示:本站项目资讯均收集自互联网,投资有风险,各位需谨慎,如有损失,概不负责
  • 一手消息:请加入QQ禁言群,获取最新消息

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: