首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

使用OpenJWeb(RAD) Java完整过程示例

2014-03-30 
使用OpenJWeb(RAD) Java完整过程示例

  通过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 />

       </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中增加了以下配置代码:

  

  /module/platform/editInvPro.jsp

  /module/platform/listInvPro.jsp

  /listInvPro.action?operate=selectPageList

  /module/platform/editInvPro.jsp

  /module/platform/listInvPro.jsp

  DBSupportService

  objId

  org.apache.easframework.core.entity.InvPro

  

  

  系统管理,商品维护,基本信息

  listInvPro

  商品基本信息维护

  

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

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

  


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

  


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

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

  (1) 数据库表

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

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

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

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

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

  



热点排行