使用OpenJWeb(RAD) Java快速开发平台定制功能的完整过程示例

http://www.oschina.net/question/157182_41697

使用OpenJWeb(RAD) Java快速开发平台定制功能的完整过程示例

 

王保政

Msn:[email protected]

QQ:29803446

 

通过OpenJWeb快速开发平台已可以实现由用户自己定义表结构,并在平台中动态生成增删改查页面,在具体项目的开发中,可以利用此平台快速生成表结构及增删改查页面。此平台能根据表结构自动创建hibernate映射文件,Java POJO类等。

具体操作过程如下:

(一)   定义数据库表

用户可利用此快速开发平台来创建数据库表,为了操作的方便性,用户不需要为表设置主键,平台可以自动创建一个主键字段,另外建表时平台会自动添加创建时间、创建人、最后修改时间、最后修改人、唯一行号、排序字段等。

下面以商品基本信息维护为例,来讲解通过平台生成增删改查功能的具体过程:

首先定义一个库存商品基本信息表(inv_pro)

(1)    选择平台开发表基本信息维护功能,在列表页面中点新增:

 

 

在新增页面中填入以下信息:

注意实体类名的命名规则,前缀必须是org.apache.easframework.core.entity.

后面的类名的命名规则为针对表名inv_pro,将首字母改为大写,下划线去掉,下划线后的首字母大写,所以inv_pro对应的实体类名为:org.apache.easframework.core.entity.InvPro

填写完后保存。

(1)    进入表字段基本信息维护功能,增加inv_pro表的字段定义:

 

 

点新增:

在新增页面中录入一个商品名称字段:

 

 

 

 

 

说明:字段长度不能为空,否则建表失败,上面的字段长度填写为30(不想重新截图了)

字段名的规则:小写英文字母,中间可有下划线,末尾不能有下划线,首字母必须为英文。

 

类属性名的命名规则:将字段名的下划线去掉,下划线后的首字母改为大写。

是否查询条件列被选中,可以在列表页面的查询下拉框中显示此字段。

是否在列表页面展示被选中,则生成列表页面中将显示此字段。

是否在编辑页面显示,则在编辑页面中可维护此字段。

设置完后保存,继续添加pro_code(字符串类型),pro_unit_price(小数类型)min_stock_qty(最低库存量,整数类型)pro_unit_id基本计量单位(从数据字典取值)页面分别为:

 

说明:字段长度不能为空,否则建表失败,上面的字段长度填写为30(不想重新截图了)

 

 

说明:字段长度不能为空,否则建表失败,上面的字段长度填写为10,小数位数为2

说明:字段长度不能为空,否则建表失败,上面的字段长度填写为10

 

说明:字段长度不能为空,否则建表失败,上面的字段长度填写为16(不想重新截图了)

 

由于计量单位为从数据字典取值,所以输入方式应为下拉选择框,数据字典类型对应物品计量单位编码。

以上定义完了inv_pro表的各字段,现在再进入表基本信息维护,在页面中找到inv_pro记录,选中此记录,点生成库表按钮:

 

这是检查数据库,可以看到生成了inv_pro表:

数据库自动创建了create_dt,create_uid,update_dt,update_uid,row_id,sort_no,obj_id字段,在表字段基本信息维护中,可看到平台自动添加了这些字段的声明:

平台还生成了什么内容?

(1)                                  InvPro.hbm.xml Hibernate映射文件,见D:/easdev/project01/src/001core/src/java/org/apache/easframework/core/entity/ InvPro.hbm.xml:

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<!--    Mapping file autogenerated by OpenJWeb - Hibernate Tools

-->

<hibernate-mapping>

    <class name="org.apache.easframework.core.entity.InvPro" table="inv_pro">

        <id name="objId" type="java.lang.String">

            <column name="obj_id" length="40" />

            <generator class="assigned" />

        </id>

        <property name="updateDt" type="java.lang.String">

            <column name="update_dt" length="23" />

        </property>

        <property name="proCode" type="java.lang.String">

            <column name="pro_code" length="30" />

        </property>

        <property name="proUnitId" type="java.lang.String">

            <column name="pro_unit_id" length="16" />

        </property>

        <property name="minStockQty" type="java.lang.Long">

            <column name="min_stock_qty"   />

        </property>

        <property name="sortNo" type="java.lang.Long">

            <column name="sort_no"   />

        </property>

        <property name="proName" type="java.lang.String">

            <column name="pro_name" length="30" />

        </property>

        <property name="rowId" type="java.lang.String">

            <column name="row_id" length="40" />

        </property>

        <property name="updateUid" type="java.lang.String">

            <column name="update_uid" length="40" />

        </property>

        <property name="createUid" type="java.lang.String">

            <column name="create_uid" length="40" />

        </property>

        <property name="proUnitPrice" type="java.lang.Double">

            <column name="pro_unit_price" precision="10" />

        </property>

        <property name="createDt" type="java.lang.String">

            <column name="create_dt" length="23" />

        </property>

    </class>

</hibernate-mapping>

 

(2)                                  此目录下同时生成了InvPro.java:

 

package org.apache.easframework.core.entity;

 

/**

This POJO generated by OpenJWeb - Hibernate Tools

 */

public class InvPro extends org.apache.easframework.core.entity.AbstractEntity implements java.io.Serializable {

    // Fields

    private String updateDt;

    private String proCode;

    private String proUnitId;

    private Long minStockQty;

    private Long sortNo;

    private String proName;

    private String rowId;

    private String updateUid;

    private String objId;

    private String createUid;

    private Double proUnitPrice;

    private String createDt;

 

    public InvPro() {    }

 

    public String getUpdateDt() {

        return this.updateDt;

    }

 

    public void setUpdateDt(String updateDt) {

       this.updateDt = updateDt;

    }

    public String getProCode() {

        return this.proCode;

    }

 

    public void setProCode(String proCode) {

       this.proCode = proCode;

    }

    public String getProUnitId() {

        return this.proUnitId;

    }

 

    public void setProUnitId(String proUnitId) {

       this.proUnitId = proUnitId;

    }

    public Long getMinStockQty() {

        return this.minStockQty;

    }

 

    public void setMinStockQty(Long minStockQty) {

       this.minStockQty = minStockQty;

    }

    public Long getSortNo() {

        return this.sortNo;

    }

 

    public void setSortNo(Long sortNo) {

       this.sortNo = sortNo;

    }

    public String getProName() {

        return this.proName;

    }

 

    public void setProName(String proName) {

       this.proName = proName;

    }

    public String getRowId() {

        return this.rowId;

    }

 

    public void setRowId(String rowId) {

       this.rowId = rowId;

    }

    public String getUpdateUid() {

        return this.updateUid;

    }

 

    public void setUpdateUid(String updateUid) {

       this.updateUid = updateUid;

    }

    public String getObjId() {

        return this.objId;

    }

 

    public void setObjId(String objId) {

       this.objId = objId;

    }

    public String getCreateUid() {

        return this.createUid;

    }

 

    public void setCreateUid(String createUid) {

       this.createUid = createUid;

    }

    public Double getProUnitPrice() {

        return this.proUnitPrice;

    }

 

    public void setProUnitPrice(Double proUnitPrice) {

       this.proUnitPrice = proUnitPrice;

    }

    public String getCreateDt() {

        return this.createDt;

    }

 

    public void setCreateDt(String createDt) {

       this.createDt = createDt;

    }

}

 

(3)                                  EntityContainer.java中增加了InvPro的声明:

 

       private InvPro invPro;

 

       public void setInvPro(InvPro entity)

       {

              this.invPro = entity;

       }

 

       public InvPro getInvPro()

       {

              return this.invPro;

       }

(4)                                  D:/easdev/project01/src/001core/src/java中的dataSource.xml中增加了InvPro.hbm.xml的声明:

 

                                 <value>org/apache/easframework/core/entity/InvPro.hbm.xml</value>

 

 

开始创建功能项,生成功能的增删改查页面:

(1)

点“新增”:

注意实体类选择上面定义的库存商品基本信息表,保存后回到列表页面,选择“商品基本信息维护”一行,点生成功能代码:

操作完成,系统提示“JSP文件已生成”,这时点确定后,查看D:/easdev/project01/src/001core/src/java/xwork.xml中增加了以下配置代码:

     <action name="listInvPro" class="org.apache.easframework.core.webwork.action.BaseAction">

           <result name="input">/module/platform/editInvPro.jsp</result>

           <result name="success">/module/platform/listInvPro.jsp</result>

           <result name="select">/listInvPro.action?operate=selectPageList</result>

           <result name="edit">/module/platform/editInvPro.jsp</result>

           <result name="showList">/module/platform/listInvPro.jsp</result>

           <param name="serviceName">DBSupportService</param>

           <param name="keyFieldName">objId</param>

           <param name="entityClassName">org.apache.easframework.core.entity.InvPro</param>

           <param name="codeColumns"></param>

           <param name="sortColumns"></param>

           <param name="titleBar">系统管理,商品维护,基本信息</param>

           <param name="actionName">listInvPro</param>

           <param name="editTitle">商品基本信息维护</param>

        </action>

 

同时在D:/easdev/project01/src/001core/web/module/platform中生成了listInvPro.jspeditInvPro.jsp文件,这时运行D:/easdev/build/ userbuild.bat注意运行此编译脚本前把tomcat服务器关闭掉(否则在新增功能页面中录入数据保存后出现异常)

 

提示运行成功后,切换到刚才的页面,在浏览器地址栏点刷新,在动态功能中生成一个商品基本信息维护,点此功能点,出现由平台生成的列表页面(右侧的页面为平台生成的页面)

点新增,进入编辑页面,录入下面信息保存:

至此实现了通过平台建立增删改查的完整过程,大家可以使用此新生成功能点的增删改查及分页的各种操作。

 

如果想删除生成的功能,需要删除相应的内容:

(1)       数据库表

(2)       生成的hibernate配置文件和对应的java

(3)       EntityContainer中去掉对应的实体声明

(4)       Xwork.xml中删除对应的action

(5)       Datasource.xml中删除对应的hbm.xml

(6)       表信息及字段基本信息维护中删除对应的记录。

 

 
原文链接:http://blog.csdn.net/baozhengw/article/details/2121734

猜你喜欢

转载自xinklabi.iteye.com/blog/2048019