如果下方文本有不懂的,可以看一下上面对应的视频讲解
Java代码生成器
1. 点击右侧按钮下载这个生成器,压缩包里面除了生成器外,还有生成器生成的项目的对应的数据脚本, 这个数据脚本是手工导 入的,注: 生成器只能生成相应的代码,并不能生成数据脚本
2. 生成器安装完成后,目录结构如下图, 双击 SpringMVC代码生成器.exe 即可运行
3. 下拉选择工资管理, 本文以 【工资管理】 为例进行讲解
4. 实例中三张表 Department(部门表), Employee(员工表), Salary(薪水表)
由于采用hibernate进行编程, Employee含有Department信息(多对一), Salary含有Emplyee信息(多对一), 见下图
5. 根据上面三张表的结构关系,建立自己的sql库表(MySql5及以上), 下载的压缩包含有相应的sql建表语句
6. 如果三张表仍不满足我们的需求,可以在菜单【项目操作】->【添加类】中添加新表,添加类就是添加新表
目前处在【工资管理】项目中, 如果需要创建另一个项目,则可以【新建项目】, 项目创建完就可以创建类(表),
类创建完即可以添加成员
7. 创建java项目时需要一个包名, 点击菜单进行设置
包名设置完成, 点击菜单【自动生成代码】
项目生成后,对应的文件在projects中
8 使用myeclipe将项目导入到工程中, JDK使用 JDK1.6,JDK1.7
9 将数据脚本导致到mysql中,并根据下图配置数据库名,用户名与密码
10. 生成的项目使用二层架构, controller与dao层,事务在dao层进行处理
11. 项目正常启动后,访问链接 http://localhost:8080/JavaWebProject/login 根据admin中的信息进行登录
12 登录成功,进入后台管理页面,页面有点不太和谐, 如果你会css,html, 你可以进行定制化开发
因为本文的重点是后台,所以前台不会太过关注
下面进入后台应用讲解
13. 生成的项目中都会有一个默认的Admin, 对应有Admin.java, Admin.hbm.xml, 这个类对应的功能暂时省略
主要讲解我们生成的三张表对应的功能
14. Department表
Department对应的Bean , @NotEmpty是springmvc对数据的验证
public class Department { /*部门编号*/ private Integer departmentId; public Integer getDepartmentId() { return departmentId; } public void setDepartmentId(Integer departmentId) { this.departmentId = departmentId; } /*部门名称*/ @NotEmpty(message="部门名称不能为空") private String departmentName; public String getDepartmentName() { return departmentName; } public void setDepartmentName(String departmentName) { this.departmentName = departmentName; } }
Department Bean对应数据库表映射关系
<generator class="native"/>表明departmentId为表的主键,并且自增长, 所以插入值时,这个字段不能赋值
<hibernate-mapping package="com.shuangyulin.domain"> <class name="Department" table="t_Department"> <!-- 主键部门编号 --> <id name="departmentId" column="departmentId"> <generator class="native"/> </id> <!-- 简单字符串属性: 部门名称 --> <property name="departmentName" column="departmentName" type="string" length="20" /> </class> </hibernate-mapping>
使用Post方法,url接口如下可以添加部门信息,注意不要有departmentId字段
15 Employee表
Employee对应的Bean , @NotEmpty是springmvc对数据的验证
public class Employee { /*员工编号*/ @NotEmpty(message="员工编号不能为空") private String empoyeeNo; public String getEmpoyeeNo() { return empoyeeNo; } public void setEmpoyeeNo(String empoyeeNo) { this.empoyeeNo = empoyeeNo; } /*员工姓名*/ @NotEmpty(message="员工姓名不能为空") private String employeeName; public String getEmployeeName() { return employeeName; } public void setEmployeeName(String employeeName) { this.employeeName = employeeName; } /*员工部门*/ private Department employeeDepart; public Department getEmployeeDepart() { return employeeDepart; } public void setEmployeeDepart(Department employeeDepart) { this.employeeDepart = employeeDepart; } /*员工生日*/ @NotEmpty(message="必须输入员工生日") private String birthday; public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } /*入职年份*/ @NotNull(message="必须输入入职年份") private Integer inYear; public Integer getInYear() { return inYear; } public void setInYear(Integer inYear) { this.inYear = inYear; } /*员工头像*/ private String employeePhoto; public String getEmployeePhoto() { return employeePhoto; } public void setEmployeePhoto(String employeePhoto) { this.employeePhoto = employeePhoto; } }
employeeDepart为Employee的外键
private Department employeeDepart; 此属性原本应该是整型,但由于是外键,使用herbinate 多对一属性,故在此声明为
相应的对象
<hibernate-mapping package="com.shuangyulin.domain"> <class name="Employee" table="t_Employee"> <!-- 主键员工编号 --> <id name="empoyeeNo" type="string" length="20"> <generator class="assigned"/> </id> <!-- 简单字符串属性: 员工姓名 --> <property name="employeeName" column="employeeName" type="string" length="10" /> <!-- 多对一属性: 员工部门 --> <many-to-one name="employeeDepart" column="employeeDepart" class="Department" lazy="false" outer-join="true" cascade="save-update" /> <!-- 简单日期型属性: 员工生日 --> <property name="birthday" column="birthday" type="string" length="10" /> <!-- 简单整型属性: 入职年份 --> <property name="inYear" column="inYear" type="java.lang.Integer" /> <!-- 简单图片属性: 员工头像 --> <property name="employeePhoto" column="employeePhoto" type="string" length="50" /> </class> </hibernate-mapping>
插入员工数据url, url中携带员工数据, 并且指定部门departmentId, 指定方式为employeeDepart.departmentId=2
注意: empoyeeNo必须指定(原因:<generator class="assigned"/>)