最简单的方式,是适合于POJO的需求,通过Annotation的方式来实现。
具体可以参见下面的代码范例:
@ReportClass(
title = "Users",
reportSheets = {
@ReportSheet(
freezed = 1,
index = false,
sheetName = "User",
reportPrimitiveFields = {@ReportPrimitiveField(fieldName="email",width=20),
@ReportPrimitiveField(fieldName="name",width=15,
url="http://localhost:8080/vaalhaai/framework/identityUserAction!open.do?id=${id}"),
@ReportPrimitiveField(fieldName="loginId",width=20),
@ReportPrimitiveField(fieldName="nickName")
}
),
@ReportSheet(
freezed = 2,
index = true,
sheetName = "All",
reportPrimitiveFields = {@ReportPrimitiveField(fieldName="email",width=20),
@ReportPrimitiveField(fieldName="name",width=15),
@ReportPrimitiveField(fieldName="loginId",width=20),
@ReportPrimitiveField(fieldName="nickName",width = 20),
@ReportPrimitiveField(fieldName="password",width = 10)
},
reportEntityCollectionFields = {
@ReportEntityCollectionField(
className="com.vaalhaai.framework.identity.entity.Group",
sheetName="Group",
fieldName="groups")
}
)
}
)
public class User extends BaseEntity {
private static final long serialVersionUID = 83202417663407938L;
/** password */
@Column(name = "PASSWORD")
@Size(min = 6, max = 128)
private String password;
/** login id */
@Column(name = "LOGIN_ID", unique = true)
@Index(name = "FRAMEWORK_IDENTITY_USER_LOGINID", columnNames = "LOGIN_ID")
@Size(min = 5, max = 50)
private String loginId;
/** email */
@Column(name = "EMAIL")
@Email
@Size(max = 50)
private String email;
/** birthday */
@Column(name = "BIRTHDAY")
@Temporal(TemporalType.DATE)
private Date birthday;
/** gender */
@Column(name = "GENDER")
@Size(max = 10)
private String gender;
@Column(name = "NICK_NAME")
@Size(max = 50)
private String nickName;
@Column(name = "CELLPHONE")
@Size(max = 50)
private String cellphone;
@Column(name = "TELEPHONE")
@Size(max = 50)
private String telephone;
@ManyToMany(cascade = { CascadeType.ALL })
@JoinTable(name = "VAALHAAI_IDENTITY_USER_REF_GROUP", joinColumns = { @JoinColumn(name = "GROUP_ID") }, inverseJoinColumns = { @JoinColumn(name = "USER_ID") })
private Set<Group> groups = new HashSet<Group>();
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getLoginId() {
return loginId;
}
public void setLoginId(String loginId) {
this.loginId = loginId;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
/*
* public void setBirthday(String birthday) throws ParseException {
* this.birthday = DateUtil.parseDate(birthday); }
*/
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
/**
* @return the cellphone
*/
public String getCellphone() {
return cellphone;
}
/**
* @param cellphone
* the cellphone to set
*/
public void setCellphone(String cellphone) {
this.cellphone = cellphone;
}
/**
* @return the groups
*/
public Set<Group> getGroups() {
return groups;
}
/**
* @param groups
* the groups to set
*/
public void setGroups(Set<Group> groups) {
this.groups = groups;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + ((loginId == null) ? 0 : loginId.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!super.equals(obj))
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (loginId == null) {
if (other.loginId != null)
return false;
} else if (!loginId.equals(other.loginId))
return false;
return true;
}
}
定义可以在Annotation上面完成。
至于对于标题的中文支持,可以通过国际化的方式来实现。
User = 用户
name = 姓名
loginId = 登录名
password = 密码
email = 邮箱
birthday = 出生日期
gender = 性别
nickName = 别名
cellphone = 手机
telephone = 电话
groups = 群组
#报表
Users = 用户
All = 所有信息
如果你不喜欢用Annotation的方式,那就期待下一个版本吧,会支持使用数据库定制的方式!
分享到:
相关推荐
是对Delphi 最贴切的描述。 本书几乎囊括了Delphi 7 进行实用程序开发的全部知识,并结合大量实用而又有代 表性的开发示例进行讲解。使读者能够方便、顺利地掌握Delphi 的各项开发技术。 全书分为22 章,各部分既...
学生管理要求 学生情况 无权输入 当前输入 统计表 成绩表 补考成绩表 管理要求 奖励处分表 学生资料表 修复学,退学 报表 第2层DD "加工名:学生管理 " "简要描述:能够对所有与学生学生有关的信息进行处理 " "输入...
第二章概述了管理信息系统的相关理论,第三章对本系统进行了系统分析和设计,包括功能需求描述、数据库设计等内容。第四章介绍了本系统的具体实现。最后一章对本系统开发过程中结论及使用过程中的体会进行了总结。 ...
现代化的车站售票是集预定车票、售票 、退票、车次查询、报表及其他各种服务,车站售票组织庞大,服务项目多,信息量大,要想提高劳动生产,降低成本,提高服务质量和管理水平,进而促进经济效益,必须借助计算机来...
1 引言 编写目的 说明编写详细设计方案的... 用户界面设计 规定人机界面的内容、界面风格、调用方式等,包括所谓的表单设计、报表设计和用户 需要的打印输出等设计。此部分内容可能比较多。 6 数据库系统设计 此数据库
现代化的车站售票是集预定车票、售票 、退票、车次查询、报表及其他各种服务,车站售票组织庞大,服务项目多,信息量大,要想提高劳动生产,降低成本,提高服务质量和管理水平,进而促进经济效益,必须借助计算机来...
4.1 对系统的简要描述 4.2 与现有系统比较的优越性 4.3 处理流程和数据流程 4.4 采用建议系统可能带来的影响 ● 对设备的影响 ● 对现有软件的影响 ● 对用户的影响 ● 对系统运行的影响 ● 对...
流出数据流 组成:{数据结构}数据量存取方式} 处理过程描述={处理过程名介绍说明输入:{数据流}输出:{数 据流}, 处理:{简要介绍说明}} 2. 概念结构设计阶段 通过对用户需求进行综合、归纳和抽象形成个独立...
* chc_title:nvarchar(200),概要(对销售机会的简要描述),可以为空。 * chc_rate:int,成功机率,可以为空。 * chc_linkman:nvarchar(50),联系人,可以为空。 * chc_tel:nvarchar(50),联系人电话,可以为空...
随着电网企业内部沟通制度的健全,各组员工的合理化建议上报需求越来越大,...实际应用表明,基于Activiti的合理化建议管理系统为企业提供了高效的合理化建议管理、流程监控、统计报表等功能,达到了预期的开发目标。
第2章介绍了关系模型,定义了基本的关系术语,还介绍了规范化原则的基本概念,并描述了规范化过程。 第3章讲述了基本的SQL语句,介绍了定义数据的基本SQL语句,如SQL SELECT语句和数据修改语句。本书并不介绍高级的...
7.1.5 结算方式设置 7 7.1.6 部门设置 7 7.1.7 公司职员设置 7 7.1.8 币种及汇率设置 7 7.1.9 客户设置 7 7.1.10 供应商设置 7 7.1.11 项目分类设置 7 7.1.12 项目目录定义 7 7.1.13 多栏帐栏目定义 7 7.2 记帐凭证...
功能强大的报表统计使得用户大数据分析变的简单,更加容易的制定销售战略。集成的短信发送 使得用户随时随地的为公司客户发送短信。简单易用的操作界面使得用户快速上手。 云点滴客户关系管理CRM功能介绍; 一、...
简要介绍: 云点滴客户解决方案是针对中小企业量身制定的具有简单易用、功能强大、永久免费使用、终身升级维护的智能化客户解决方案。依托功能强大、安全稳定的阿里云** 台,性价比高、扩展性好、安全性高、稳定性好...
项目类型:省公司自立" "项目 " "专利情况: " "成果简介:简要描述成果目的和意义,解决的问题,取得的社会和经济效益。 " "随着我公司业务的不断发展和客户服务工作内容和要求的不断提高,客服来话量不断提升," ...
功能强大的报表统计使得用户大数据分析变的简单,更加容易的制定销售战略。集成的短信发送 使得用户随时随地的为公司客户发送短信。简单易用的操作界面使得用户快速上手。 功能介绍; 一、个人中心:通讯录备忘录...
软件测试规范 目 录 一.概述 ...............................................................................................................................................................
作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...