JFinal生成表結構對應的接口xml文檔

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

相關文章
相關標籤/搜索