`
xinklabi
  • 浏览: 1591412 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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

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

 

王保政

Msn:baozhengw999@hotmail.com

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

分享到:
评论

相关推荐

    RAD开发J2EE项目

    标题“RAD开发J2EE项目”指的是使用IBM Rational Application Developer (简称RAD)工具进行Java EE (以前称为J2EE)应用程序的开发。这涉及到一系列的步骤和技术,包括设计、编码、测试和部署企业级的Java应用程序。 ...

    使用RadStudio XE8开发iOS及Android移动应用的官方教程

    通过这个官方教程,开发者不仅可以掌握RadStudio XE8的基本操作,还能深入理解跨平台开发的关键技术和策略,从而提高开发效率,减少在不同平台间移植代码的工作量。无论你是初学者还是有经验的开发者,这份教程都会...

    一款基于代码生成器的JAVA快速开发平台!基于SpringBoot 2.x,layui,Mybatis,Srping.zip

    基于SpringBoot 2.x,layui,Mybatis,Srping.zip”揭示了这个项目的核心特点,即它是一个使用Java语言开发的快速应用开发(RAD)平台,利用了代码生成器来加速开发进程。此平台建立在SpringBoot 2.x框架之上,同时...

    RAD快速应用开发环境EntireJ.zip

    EntireJ 是一个 RAD 快速应用开发环境,用于构建高度可伸缩的企业级应用,基于 RCP/RAP、JavaFX 平台以及 Android 和 iOS 移动平台。使用强大的声明式特性。 标签:EntireJ J2EE框架

    使用RAD写WebService

    【使用RAD开发WebService详解】 创建WebService是软件开发中常见的任务,尤其在企业级应用中,用于服务间的通信和数据交换。 Rational Application Developer (RAD) 是IBM提供的一款强大的集成开发环境,支持开发...

    rad开发webservice的例子

    综上所述,这个压缩包中的内容可能包含一个使用RAD 7开发的基于JSR 168的portlet示例,以及详细说明如何在RAD环境中创建和部署Web服务的文档。这些技术都是Java企业级开发中的关键组成部分,对于理解和实践企业级...

    IBM-RAD实验报告示例

    【IBM-RAD实验报告示例】是一...通过这个【IBM-RAD实验报告示例】,学习者不仅可以深入理解IBM RAD和WebSphere的相关概念和技术,还能获得实际操作经验,提高问题解决能力,为未来在企业级Java应用开发中奠定坚实基础。

    RAD工具说明快速使用方法

    **RAD(Rapid Application Development)工具是软件开发领域中一种高效、快速构建应用程序的方法。它通过集成开发环境(IDE)提供了可视化设计、自动化代码生成和即时反馈机制,大大简化了开发流程,尤其适合初学者...

    IBM-RAD-V6

    IBM RAD V6 基于 Eclipse 平台构建,利用了 Eclipse 的强大功能,同时又添加了自己的特性和工具,为用户提供了一个更加完整的开发体验。 **1.3.4 测试服务器环境** 为了更好地支持开发过程中的测试需求,IBM RAD ...

    使用RAD开发Web应用程序培训

    ### 使用RAD开发Web应用程序培训知识点概述 #### 一、培训对象 本次培训主要面向以下两类人群: 1. **基于Java的Web开发者**:对于已经具备一定J2EE基础的开发者而言,通过此次培训将能够更加深入地掌握完整的J2EE...

    IBM.zip IBM RAD资源包

    IBM RAD是基于Eclipse平台构建的,它为开发人员提供了丰富的功能,包括代码编辑、调试、测试、部署以及项目管理。它支持Java、JSP、Servlet、JavaScript、XML等多种编程语言,并且内置了对IBM WebSphere Application...

    使用RAD 7.5和WAS 7.0构建Java EE应用程序.doc

    ### 使用RAD 7.5和WAS 7.0构建Java EE应用程序 #### 引言 随着企业级应用的需求不断增长,开发人员面临着越来越复杂的挑战。为了满足这种需求,IBM Rational Application Developer for WebSphere Software V7.5 ...

    Delphi-RADStudio示例DOM

    Delphi-RAD Studio示例DOM是一个关于使用RAD Studio进行快速应用程序开发(RAD)时,针对文档对象模型(DOM)操作的实例集合。DOM是用于表示XML或HTML文档的标准编程接口,它允许程序员和脚本语言动态地访问和更新...

    EhLib 10.0.031 for RAD Studio 11 Alexandria Full Source.7z

    EhLib是一个专门为RAD Studio(原CodeGear Delphi和C++Builder)开发的组件库,主要为开发者提供一系列高效、...通过查看提供的文档、示例和更新历史,开发者可以快速掌握EhLib的使用,利用其强大功能提升开发效率。

    RAD Studio10.2.2的隱藏功能.doc

    RAD Studio10.2.2的隱藏功能.doc

    基于JEE的web快速开发平台

    WebBuilder是一款跨平台、数据库和浏览器的Web可视化应用开发和部署平台。 使用WebBuilder可开发ERP、OA、CRM...使用WebBuilder可快速开发出功能强大的各种企业级应用系统,也可以基于应用系统平台做深度的二次开发。

    图像处理开发控件,支持Rad studio Tokyo

    总的来说,这个图像处理开发控件为使用Rad Studio Tokyo的开发者提供了一个强大而便捷的工具,帮助他们轻松地在多平台上实现各种图像处理功能。通过深入理解和熟练掌握这个控件,开发者可以提高开发效率,为用户提供...

    RAD Studio 10.2 Indy 网络开发

    "RAD Studio 10.2 Indy 网络开发"专注于使用Embarcadero的RAD Studio 10.2中的Indy组件进行网络编程。Indy(Internet Direct)是一个强大的开源框架,它提供了丰富的API,用于构建跨平台的网络应用程序,包括TCP/IP...

    CodeGear RAD Studio 2007 v11.0.2804.9245 官方完整(ISO+单独文件)下载

    4. **跨平台开发**:虽然RAD Studio 2007主要面向Windows平台,但结合其他工具和技术,也能实现一定程度上的跨平台应用开发。 综上所述,CodeGear RAD Studio 2007 v11.0.2804.9245提供了丰富的功能和灵活性,是...

Global site tag (gtag.js) - Google Analytics