http://www.oschina.net/question/157182_41697
使用OpenJWeb(RAD) Java快速开发平台定制功能的完整过程示例
王保政
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.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) 表信息及字段基本信息维护中删除对应的记录。
相关推荐
标题“RAD开发J2EE项目”指的是使用IBM Rational Application Developer (简称RAD)工具进行Java EE (以前称为J2EE)应用程序的开发。这涉及到一系列的步骤和技术,包括设计、编码、测试和部署企业级的Java应用程序。 ...
通过这个官方教程,开发者不仅可以掌握RadStudio XE8的基本操作,还能深入理解跨平台开发的关键技术和策略,从而提高开发效率,减少在不同平台间移植代码的工作量。无论你是初学者还是有经验的开发者,这份教程都会...
基于SpringBoot 2.x,layui,Mybatis,Srping.zip”揭示了这个项目的核心特点,即它是一个使用Java语言开发的快速应用开发(RAD)平台,利用了代码生成器来加速开发进程。此平台建立在SpringBoot 2.x框架之上,同时...
EntireJ 是一个 RAD 快速应用开发环境,用于构建高度可伸缩的企业级应用,基于 RCP/RAP、JavaFX 平台以及 Android 和 iOS 移动平台。使用强大的声明式特性。 标签:EntireJ J2EE框架
【使用RAD开发WebService详解】 创建WebService是软件开发中常见的任务,尤其在企业级应用中,用于服务间的通信和数据交换。 Rational Application Developer (RAD) 是IBM提供的一款强大的集成开发环境,支持开发...
综上所述,这个压缩包中的内容可能包含一个使用RAD 7开发的基于JSR 168的portlet示例,以及详细说明如何在RAD环境中创建和部署Web服务的文档。这些技术都是Java企业级开发中的关键组成部分,对于理解和实践企业级...
【IBM-RAD实验报告示例】是一...通过这个【IBM-RAD实验报告示例】,学习者不仅可以深入理解IBM RAD和WebSphere的相关概念和技术,还能获得实际操作经验,提高问题解决能力,为未来在企业级Java应用开发中奠定坚实基础。
**RAD(Rapid Application Development)工具是软件开发领域中一种高效、快速构建应用程序的方法。它通过集成开发环境(IDE)提供了可视化设计、自动化代码生成和即时反馈机制,大大简化了开发流程,尤其适合初学者...
IBM RAD V6 基于 Eclipse 平台构建,利用了 Eclipse 的强大功能,同时又添加了自己的特性和工具,为用户提供了一个更加完整的开发体验。 **1.3.4 测试服务器环境** 为了更好地支持开发过程中的测试需求,IBM RAD ...
### 使用RAD开发Web应用程序培训知识点概述 #### 一、培训对象 本次培训主要面向以下两类人群: 1. **基于Java的Web开发者**:对于已经具备一定J2EE基础的开发者而言,通过此次培训将能够更加深入地掌握完整的J2EE...
IBM RAD是基于Eclipse平台构建的,它为开发人员提供了丰富的功能,包括代码编辑、调试、测试、部署以及项目管理。它支持Java、JSP、Servlet、JavaScript、XML等多种编程语言,并且内置了对IBM WebSphere Application...
### 使用RAD 7.5和WAS 7.0构建Java EE应用程序 #### 引言 随着企业级应用的需求不断增长,开发人员面临着越来越复杂的挑战。为了满足这种需求,IBM Rational Application Developer for WebSphere Software V7.5 ...
Delphi-RAD Studio示例DOM是一个关于使用RAD Studio进行快速应用程序开发(RAD)时,针对文档对象模型(DOM)操作的实例集合。DOM是用于表示XML或HTML文档的标准编程接口,它允许程序员和脚本语言动态地访问和更新...
EhLib是一个专门为RAD Studio(原CodeGear Delphi和C++Builder)开发的组件库,主要为开发者提供一系列高效、...通过查看提供的文档、示例和更新历史,开发者可以快速掌握EhLib的使用,利用其强大功能提升开发效率。
RAD Studio10.2.2的隱藏功能.doc
WebBuilder是一款跨平台、数据库和浏览器的Web可视化应用开发和部署平台。 使用WebBuilder可开发ERP、OA、CRM...使用WebBuilder可快速开发出功能强大的各种企业级应用系统,也可以基于应用系统平台做深度的二次开发。
总的来说,这个图像处理开发控件为使用Rad Studio Tokyo的开发者提供了一个强大而便捷的工具,帮助他们轻松地在多平台上实现各种图像处理功能。通过深入理解和熟练掌握这个控件,开发者可以提高开发效率,为用户提供...
"RAD Studio 10.2 Indy 网络开发"专注于使用Embarcadero的RAD Studio 10.2中的Indy组件进行网络编程。Indy(Internet Direct)是一个强大的开源框架,它提供了丰富的API,用于构建跨平台的网络应用程序,包括TCP/IP...
4. **跨平台开发**:虽然RAD Studio 2007主要面向Windows平台,但结合其他工具和技术,也能实现一定程度上的跨平台应用开发。 综上所述,CodeGear RAD Studio 2007 v11.0.2804.9245提供了丰富的功能和灵活性,是...