通过hibernate实现员工管理系统的CRUP。
对应关系
部门管理(Department):一个部门对应多个员工(one-to-many)
员工管理(Employee):多个员工对应一个部门(many-to-one)
实体类:
Department
public class Department { /** * 部门编号 */ private Integer did; /** * 部门名称 */ private String dname; /** * 部门描述 */ private String ddesc; /** * 部门的员工集合 */ private Set<Employee> emplyoees = new HashSet<Employee>(); public Integer getDid() { return did; } public void setDid(Integer did) { this.did = did; } public String getDname() { return dname; } public void setDname(String dname) { this.dname = dname; } public String getDdesc() { return ddesc; } public void setDdesc(String ddesc) { this.ddesc = ddesc; } public Set<Employee> getEmplyoees() { return emplyoees; } public void setEmplyoees(Set<Employee> emplyoees) { this.emplyoees = emplyoees; } @Override public String toString() { return "Department [did=" + did + ", dname=" + dname + ", ddesc=" + ddesc + ", emplyoees=" + emplyoees + "]"; } }
Employe
public class Employee { /** * 员工数据库编号 */ private Integer eid; /** * 员工姓名 */ private String ename; /** * 员工性别 */ private String sex; /** * 员工生日 */ private Date birthday; /** * 员工入职日期 */ private Date joinDate; /** * 员工编号 */ private String eno; /** * 员工登录名 */ private String username; /** * 员工登录密码 */ private String password; /** * 所属的部门 */ private Department department; public Integer getEid() { return eid; } public void setEid(Integer eid) { this.eid = eid; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public Date getJoinDate() { return joinDate; } public void setJoinDate(Date joinDate) { this.joinDate = joinDate; } public String getEno() { return eno; } public void setEno(String eno) { this.eno = eno; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Department getDepartment() { return department; } public void setDepartment(Department department) { this.department = department; }
配置文件
Department.hbm.xml
<hibernate-mapping> <class name="com.charspan.employee.domain.Department" table="department"> <id name="did" column="did"> <!-- 主键的生成策略 --> <generator class="native" /> </id> <property name="dname" column="dname" length="20" /> <property name="ddesc" column="ddesc" length="100" /> <!-- 映射关系 --> <set name="emplyoees" cascade="delete" inverse="true"> <key column="dno" /> <one-to-many class="com.charspan.employee.domain.Employee" /> </set> </class> </hibernate-mapping>
Employee.hbm.xml
<hibernate-mapping> <class name="com.charspan.employee.domain.Employee" table="employee"> <id name="eid" column="eid"> <!-- 主键的生成策略 --> <generator class="native" /> </id> <property name="ename" column="ename" length="20" /> <property name="sex" column="sex" length="10" /> <property name="birthday" column="birthday" /> <property name="joinDate" column="joinDate" /> <property name="eno" column="eno" length="20" /> <property name="username" column="username" length="20" /> <property name="password" column="password" length="20" /> <!-- 映射关系 --> <many-to-one name="department" class="com.charspan.employee.domain.Department" column="dno" /> </class> </hibernate-mapping>
DAO
DepartmentDao
public interface DepartmentDao { int findCount(); List<Department> findByPage(int begin, int pageSize); void save(Department department); Department findById(Integer did); void update(Department department); void delete(Department department); List<Department> findAll(); }
EmployeeDao
public interface EmployeeDao { Employee findByUsernameAndPassword(Employee employee); int findCount(); List<Employee> findByPage(int begin, int pageSize); void save(Employee employee); Employee findById(Integer eid); void update(Employee employee); void delete(Employee employee); }
实现
EmployeeDaoImpl
public class EmployeeDaoImpl extends HibernateDaoSupport implements EmployeeDao { @Override public Employee findByUsernameAndPassword(Employee employee) { System.out.println(employee.getUsername() + " " + employee.getPassword()); String hql = "from Employee where username = ? and password = ?"; @SuppressWarnings("unchecked") List<Employee> list = this.getHibernateTemplate().find(hql, employee.getUsername(), employee.getPassword()); if (list.size() > 0) { return list.get(0); } return null; } @SuppressWarnings("unchecked") @Override public int findCount() { String hql = "select count(*) from Employee"; List<Long> list = this.getHibernateTemplate().find(hql); if (list.size() > 0) { return list.get(0).intValue(); } return 0; } @SuppressWarnings("unchecked") @Override public List<Employee> findByPage(int begin, int pageSize) { DetachedCriteria criteria = DetachedCriteria.forClass(Employee.class); List<Employee> list = this.getHibernateTemplate().findByCriteria( criteria, begin, pageSize); return list; } @Override public void save(Employee employee) { this.getHibernateTemplate().save(employee); } @Override public Employee findById(Integer eid) { return this.getHibernateTemplate().get(Employee.class, eid); } @Override public void update(Employee employee) { this.getHibernateTemplate().update(employee); } @Override public void delete(Employee employee) { this.getHibernateTemplate().delete(employee); } }
DepartmentDaoImpl
public class DepartmentDaoImpl extends HibernateDaoSupport implements DepartmentDao { @SuppressWarnings("unchecked") @Override public int findCount() { String hql = "select count(*) from Department"; List<Long> list = this.getHibernateTemplate().find(hql); if (list.size() > 0) { return list.get(0).intValue(); } return 0; } @SuppressWarnings("unchecked") @Override public List<Department> findByPage(int begin, int pageSize) { DetachedCriteria criteria = DetachedCriteria.forClass(Department.class); List<Department> list = this.getHibernateTemplate().findByCriteria( criteria, begin, pageSize); return list; } @Override public void save(Department department) { this.getHibernateTemplate().save(department); } @Override // 根据部门编号查询部门信息 public Department findById(Integer did) { return this.getHibernateTemplate().get(Department.class, did); } @Override public void update(Department department) { this.getHibernateTemplate().update(department); } @Override public void delete(Department department) { this.getHibernateTemplate().delete(department); } @SuppressWarnings("unchecked") @Override public List<Department> findAll() { return this.getHibernateTemplate().find("from Department"); } }
演示