今天努力了一下午,终于弄出来生成xml接口文档了。这两天一直在重复干一件事,就是根据数据库的表结构,手写对应的xml文档。虽然eclipse有很方便的快捷键,可是重复的工做仍是不少。特别是当字段不少时,就须要注意不少地方。因而今天下午就本身写了一个这样的程序。html
原来的工做是这样子的:java
根据下面表结构mysql
手敲出对应的接口xml文件。这里面使用了freemarker语法。虽然能够使用alt+shift+a快速编写,可是仍是很费时间。sql
因而今天作了一个这样的程序,用程序生成xml文件。结果以下。数据库
虽然说页面不咋地,但具体功能实现了。下面是实现过程,就是查出表结构,用freemarker生成。服务器
controller代码:使用sql语句,查出表结构【sql server专用】eclipse
public void codeFactoryFinal(){ String tableName = "Project"; List<Record> list = Db.find("select * from information_schema.columns where table_name='"+tableName+"'"); setAttr("tableStruct",list); setAttr("tableName", tableName); System.out.println(list); renderFreeMarker("codeFactoryFinal.html"); }
页面代码:使用freemarker语法生成spa
<?xml version="1.0" encoding="utf-8"?> <list> <#list tableStruct as vo> <${tableName}> <#noparse><#if </#noparse>${tableName}.${vo.COLUMN_NAME}<#noparse>?exists> </#noparse> <${vo.COLUMN_NAME}> <#noparse>${</#noparse>${tableName}.${vo.COLUMN_NAME}<#if vo.DATA_TYPE == 'bit'><#noparse>?string('true','false')</#noparse></#if><#noparse>}</#noparse> </${vo.COLUMN_NAME}> <#noparse></#if></#noparse> </${tableName}> </#list> </list>
主要判断字段的值是否存在和是否为bit类型。固然也能够把tableName弄成能够输出进来的。code
最后祝JFinal愈来愈火!orm
第二版:renderXml方法返回的。PS:晚上连不上服务器上的sql server数据库,用mysql数据库演示。
controller的代码:
public void renderDesc(){ List<Record> list = Db.find("desc blog"); setAttr("tableStruct", list); setAttr("tableName", "blog"); renderXml("descTest.xml"); }
xml代码:xml输出须要用CDATA标记包裹才会正常输出的。
<?xml version="1.0" encoding="utf-8"?> <list> <#list tableStruct as vo> <![CDATA[<${tableName}> <#noparse><#if </#noparse>${tableName}.${vo.Field}<#noparse>?exists> </#noparse> <${vo.Field}> <#noparse>${</#noparse>${tableName}.${vo.Field}<#if vo.Type == 'bit'><#noparse>?string('true','false')</#noparse></#if><#noparse>}</#noparse> </${vo.Field}> <#noparse></#if></#noparse> </${tableName}>]]> </#list> </list>
输出结果以下:多余的CDATA标记,替换掉便可。