JavaEE项目实战(OA系统)之七_部门管理之一
在框架搭建完成后,让我们来写一个练习,在这个练习中忽略一些高深的技法,主要是要跑通整个框架。
练习内容是部门管理模块。
页面一,部门列表:
页面二,部门新增/修改:
整个练习分成实体类、数据访问层、业务逻辑层、action、页面、调试几个部分实现。
一、实体类
实体类的生成使用Hibernate的反向工程生成,在DB Browser窗口中,要生成实体类的那个表上右键点击:
接下来,按下图的选项设定:
第一个选项,Create POJO<>DB Table mapping,即创建实体类与数据表间的映射
该选项下有两个子选项,第一个子选项是使用xml方式,第二个子选项是使用注解方式,我们选第二个子选项
第二个选项,Create abstract class,创建实体类的抽象父类,我们不选这个
第三个选项是生成DAO类,这是Hibernate3才有的,我们不选这个
再下来的页面是配置类型映射,我们也不做修改:
最后一页是实体类的设置,实体类的类名最好加上包名,要不它经常会生成在错误的地方,id生成器使用序列:
每一个属性的属性名最好改改,简短一点。
注意一下,如果数据字段是int类型,最好要自己指定一下,因为它经常把int类型生成为BigDecimal类型。
生成的实体类:
/**
* Dept entity. @author MyEclipse Persistence Tools
*/
// 这是实体类的注解
@Entity
// 映射的表
@Table(name = "TBL_DEPT", schema = "OA_USER")
public class Dept implements java.io.Serializable {
// Fields
/**
*
*/
private static final long serialVersionUID = 1L;
private int id;
private String name;
private int pId;
private int level;
private String remark;
// Constructors
/** default constructor */
public Dept() {
}
/** full constructor */
public Dept(String name, int pId, int level, String remark) {
this.name = name;
this.pId = pId;
this.level = level;
this.remark = remark;
}
// Property accessors
// 序列生成器,这里要指定一下序列名
@SequenceGenerator(name = "generator", sequenceName = "SEQ_DEPT")
// 主键
@Id
// 主键赋值方式,策略为序列,并指定序列生成器的名称
@GeneratedValue(strategy = SEQUENCE, generator = "generator")
// 主键列的详情
@Column(name = "DEPT_ID", unique = true, nullable = false, precision = 22, scale = 0)
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
// 普通列
@Column(name = "DEPT_NAME", length = 100)
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}