JavaEE项目实战(OA系统)之七_部门管理之一

时间:2022-06-27 20:58:40

  JavaEE项目实战(OA系统)之七_部门管理之一

  在框架搭建完成后,让我们来写一个练习,在这个练习中忽略一些高深的技法,主要是要跑通整个框架。

  练习内容是部门管理模块。

  页面一,部门列表:

JavaEE项目实战(OA系统)之七_部门管理之一

  页面二,部门新增/修改:

JavaEE项目实战(OA系统)之七_部门管理之一


  整个练习分成实体类、数据访问层、业务逻辑层、action、页面、调试几个部分实现。

  一、实体类

  实体类的生成使用Hibernate的反向工程生成,在DB Browser窗口中,要生成实体类的那个表上右键点击:

JavaEE项目实战(OA系统)之七_部门管理之一

  接下来,按下图的选项设定:

JavaEE项目实战(OA系统)之七_部门管理之一

  第一个选项,Create POJO<>DB Table mapping,即创建实体类与数据表间的映射

  该选项下有两个子选项,第一个子选项是使用xml方式,第二个子选项是使用注解方式,我们选第二个子选项

  第二个选项,Create abstract class,创建实体类的抽象父类,我们不选这个

  第三个选项是生成DAO类,这是Hibernate3才有的,我们不选这个


  再下来的页面是配置类型映射,我们也不做修改:

JavaEE项目实战(OA系统)之七_部门管理之一


  最后一页是实体类的设置,实体类的类名最好加上包名,要不它经常会生成在错误的地方,id生成器使用序列:

JavaEE项目实战(OA系统)之七_部门管理之一

  每一个属性的属性名最好改改,简短一点。

  注意一下,如果数据字段是int类型,最好要自己指定一下,因为它经常把int类型生成为BigDecimal类型。

JavaEE项目实战(OA系统)之七_部门管理之一


  生成的实体类:

/**
* 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;
}