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标记,替换掉便可。

相关文章
相关标签/搜索