每次写一个新的东西都有一种很神奇的感觉。写之前感觉好难好难,这是个什么玩意,看不懂。刚开始写感觉千辛万苦,写到中间感觉逐渐熟悉,写到最后感觉游刃有余。写完感觉不过如此,我写了个好菜的东西呀。
至于东西到底菜不菜,如果远观,看起来还行。
好啦,没有刷题的这两天写了个java生成数据库设计说明书的。
是根据我们公司要求设计的,但是大家大同小异,还是有许多借鉴之处的。请看下文
因为我是在之前同事生成其他文件的基础上加的,所以这里介绍一下思路😁
一,你要先用用jdbc工厂类连接数据库,得到对象connection。
二,用DatabaseMetaData d = connection.getMetaData()获取到数据库的相关信息。
三,用d.getTables可以获取表信息,用d.getColumns可以获取表字段信息
四,用Template的getTemplate去匹配模板,对象为template
五,设置写入流StringWriter,然后用template.process(填充信息,写入流)去渲染模板
六,写入文件
这里存在几个坑:😥
首先是DatabaseMetaData里面有许多字段
可以参考这个,获取索引的话是getIndexOf(我的不知道为啥会多获取一个空索引,我每次都把他删了),获取主键:getPrimaryKey
然后是ftl模板的制作
1 找一个excel模板,然后excel模板保存为xml电子表格。
2 这个xml里的内容ftl内。
3 然后将要渲染的内容,填充到ftl内。
4 既然是excel,那我们渲染的一般是列表。
这里有三个点注意,首先是列表的格式:
<#list indexOfs as indexOf>
<Row>
<cell><Data ss:Type="String">${indexOf.indexName}</Data></cell>
</Row>
</#list>
这段代码是写在你要渲染的那个表格里面的,如果有ss:Type和你渲染的数据不符会报错,如果渲染的数据为null可能会报错😥
三目运算符的话,可以参考这个:${(indexOf.nonUnique)?string(‘N’,‘Y’)}
还有文件要保存为xls格式的,文件打开的时候会报错,但不影响使用,手动转为其他格式就不报错了