codecamp

10.1.实体

概述

Rapido各模块之间关系,前面的内容也做了简单描述,我们要开发一个业务页面,在Rapido当中首先要做的就是先定义若干个实体。定义实体之前,我们需要先定义好实体存放的包名,如下图所示:

操作

定义好包之前,在需要放置实体的包下双击包名即可在右边工作区中看到实体定义界面,如下图所示:
要添加实体,可以在左边右键,在弹出菜单中选择添加顶级实体,如下图所示:
需要注意的是,实体支持树形结构,利用这种树形结构就可以实现我们应用当中的主从表、递归树之类层次形业务数据展示需求。添加完实体后,就可以定义该实体对应的数据库表及查询数据采用的SQL等信息。
点击“主体表名”字段中的按钮,就可以弹出查询SQL拼装向导,利用该向导,我们就可以定义一些比较规则的查询SQL,如下图所示:
在实体SQL定义时,除了可以通过上述向导方式实现,如果您对SQL比较熟悉,那么可以直接在查询SQL字段中直接定义要查询的SQL,在SQL定义过程当中,我们还可以通过边上的图标,打开一个专业的SQL编辑器输入SQL,在SQL定义中,还可以使用velocity语法定义动态SQL,如下图所示:

具体操作,这里就不再赘述。

扩展

在实体定义过程当中,可以看到,实体对应的表字段主键系统可以帮助我们自动计算出来,有了主键,就可以实现表数据的更新操作,但如果要向表中插入新的数据,就需要指定主键生成机制。
通过情况下,主键有用户自定义与自增长两种类型。用户自定义的主键又可以分为页面中用户手工输入主键;后台业务代码生成主键;数据库表自增长类型的主键。在Rapido当中,默认提供了自增长与自定义两种主键生成方式,对于自增长类型主键,在插入数据时会采用数据库自增长机制填充主键;对于自定义主键生成方式,Rapido默认提供了基于UUID的主键生成机制。在实际应用开发当中,我们可能需要其它类型的自定义主键生成方式,比如Oracle数据库中的sequence机制等,在这种情况下我们就可以通过实现IGenerator接口,来定义属于我们自己的主键生成方式,IGenerator接口内容如下:
package com.bstek.bdf2.rapido.key;
import java.util.Map;
/**
 * 定义主键生成器
 * @author jacky.gao@bstek.com
 * @since 2012-7-16
 */
public interface IGenerator<T> {
 /**
 * 用于显示的描述
 * @return 返回描述信息
 */
 String desc();
 /**
 * 产生一个唯一的用于填充主键的ID值,唯一的参数是一个Map,其中一定包含的参数有如下三个:<br>
 * 1.entityTableName:当前操作的表名,<br>
 * 2.entityFields:当前表对应实体定义时包含的字段,<br>
 * 3.entityTablePrimaryKeys:当前表在定义实体时设置的主键名,多个主键字段名之间采用逗号分隔(,),<br>
 * 以上三个在Map中包含的参数,可以在生成唯一ID时可以选择性的使用,<br>
 * 除以上三个参数包,其中还包含所有在客户端动态添加进来的参数
 * @param map 数据提交中所带的各种参数
 * @return 返回的的UUID值
 */
 T execute(Map<String,Object> map);
}
接口实现类编写完成之后,我们需要将其配置到Spring上下文环境当中,这样在实体页面配置实体时,在自定义方式主键生成机制下,就可以看到
这个实现类信息。
10.BDF2-RAPIDO
10.2.组件
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }