今天努力了一下午,終於弄出來生成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標記,替換掉便可。