信息技术

杨氏框架的自动代码功能

承蒙朋友们抬爱,把这个框架命名为杨氏框架,那我就不客气了。我起的英文名字,大家记住,Yangs Frame。
现在杨氏框架在师弟师妹的努力下已经日趋完善,也已经在项目中开始使用。可是我知道我们的框架当然需要有很多提高的地方,所以这里我要提出一些新的要求。

框架的发展
杨氏框架将在下面的方向进行发展,或者说经历下面的几个阶段:

前台和后台代码的自动生成功能(这也是我这篇文章将要说明的)
系统程序的模块化(如果第一步能够实现,那么第二步将会很容易了)
提升效率(包括数据库连接资源池、数据的缓存、数据库的并发以及全局变量的使用等)

等上面的三部分基本都实现了,那么框架就很成熟了
自动代码功能
之所以要提这个功能,是因为我觉得杨氏框架还不够智能。如果一个数据表的结构改变,那么首先我们要修改数据库,同时要修改前台页面,还要修改后台生成sql语句的类。工作量是巨大的。所以我希望能够引入配置文件的功能,从而实现代码的自动生成。

实现架构
架构图如图1所示:这里我假定的是理想情况,不需要做任何修改,那么使用E-R图生成的Sql语句和XML是绝对一致的。SQL语句用来生成数据库,XML文件用来生成前台页面和后台代码,所以三者之间是高度一致的。
/li>
XML文件
XML文件的结构应该如下所示(仅供参考)

?View Code XML<?xml version="1.0" ?>
<tables>
<table name="UserData">
<column name="UserName" type="text" unique="true" empty="false" NickName="姓名">
<column name="PassWord" type="text" unique="false" empty="false" NickName="密码">
<column name="Sex" type="bit" options="Male|Female" values="0|1" NichName="性别">
<column name="Dept" type="Table:Department:PID|DeptName" NickName="部门">
……………..
</table>
………………
</tables>

其中的name和数据库表中的某一列的列名,数据类型,是否唯一,是否为空都需要定义。另外NickName指的是别名,用来在前台Form表单进行显示。为了保证效率,可以在Tomcat运行时就将该XML文件载入内存,存放在全局变量中,这样前台和后台都可以直接使用。
前台代码(所有的代码都是伪代码,我现在已经退化到不会写代码了)
前台代码我想采用自定义标签的形式,前台调用方式会很简单:

?View Code JSP<MyTag:Autoform tablename="UserData" />

后台处理的Java程序也并不难,但是可能会复杂,因为要考虑的情况很多:

?View Code JAVAthis.tablename=tablename;//get which form you want to generate
autoform.getTable(tablename);//get the table info from the xml stored in Memory as Application variable
out.print("<form name= action= method=>");
for(i=1; i<autoform.columnnumber;i++)
{
if(column[i].type="text")
{
out.print(column.nickname+"<input name=\""+column.name+"\" >");//generate [...]

更多本类文章