JFinal生成表结构对应的接口xml文档

今天努力了一下午,终于弄出来生成xml接口文档了。这两天一直在重复干一件事,就是根据数据库的表结构,手写对应的xml文档。虽然eclipse有很方便的快捷键,但是重复的工作还是很多。特别是当字段很多时,就需要注意很多地方。于是今天下午就自己写了一个这样的程序。

原来的工作是这样子的:

根据下面表结构

175437_IOJD_1444945.png

手敲出对应的接口xml文件。这里面使用了freemarker语法。虽然可以使用alt+shift+a快速编写,但是还是很费时间。

175436_uGVq_1444945.png

于是今天做了一个这样的程序,用程序生成xml文件。结果如下。

175438_EEBG_1444945.png

虽说页面不咋地,但具体功能实现了。下面是实现过程,就是查出表结构,用freemarker生成。

controller代码:使用sql语句,查出表结构【sql server专用

 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语法生成

<?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弄成可以输出进来的。


最后祝JFinal越来越火!


第二版: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标记,替换掉即可。

225652_e0f4_1444945.png






转载于:https://my.oschina.net/u/1444945/blog/393311

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值