JavaEE项目实战(OA系统)之十四_员工管理之三

来源:互联网 发布:mac 十六进制编辑器 编辑:程序博客网 时间:2024/05/01 08:26

  JavaEE项目实战(OA系统)之十四_员工管理之三

  三、完整代码

  1. dept模块的代码修改

  (1) 新增实体类Dept2:

public class Dept2 {private int id;private String name;private int level;// getter & setter// ...}


  (2) 修改DeptDao接口和DeptBiz接口,添加方法声明:

 List<Dept2> getTree();


  (3) 修改DeptDaoImpl类,添加方法实现:

@Overridepublic List<Dept2> getTree() {String sql = "select dept_id id, dept_name name, level from tbl_dept connect by prior dept_id=dept_p_id start with dept_p_id=0";Session session = sessionFactory.getCurrentSession();SQLQuery sqlQuery = session.createSQLQuery(sql);sqlQuery.addScalar("id", StandardBasicTypes.INTEGER);sqlQuery.addScalar("name", StandardBasicTypes.STRING);sqlQuery.addScalar("level", StandardBasicTypes.INTEGER);sqlQuery.setResultTransformer(Transformers.aliasToBean(Dept2.class));List<Dept2> list = (List<Dept2>) sqlQuery.list();return list;}


  (4) 修改DeptBizImpl类,添加方法实现:

@Overridepublic List<Dept2> getTree() {return deptDao.getTree();}

  2. user模块的代码实现:

  (1) 按照上一练习“部门管理”的步骤,为user模块创建包,包结构如下:



  (2) 使用Hibernate反向工程,创建User实体类,对实体类做如下修改:

  A、添加deptName属性:

private String deptName;


  B、添加构造方法:

public User(int id, String name, String loginName, String phone,String sex, String email, String remark, int deptId, String deptName) {this.id = id;this.name = name;this.loginName = loginName;this.phone = phone;this.sex = sex;this.email = email;this.remark = remark;this.deptId = deptId;this.deptName = deptName;}


  C、为deptName属性生成get/set方法,并加上@Transient注解:

@Transientpublic String getDeptName() {return deptName;}public void setDeptName(String deptName) {this.deptName = deptName;}

  (3) UserDao接口和实现类:
public interface UserDao {void add(User user);void del(int id);void update(User user);User getById(int id);List<User> getByDeptId(int deptId);List<User> getAll();}

@Repositorypublic class UserDaoImpl implements UserDao {@Resourceprivate SessionFactory sessionFactory;@Overridepublic void add(User user) {Session session = sessionFactory.getCurrentSession();session.save(user);}@Overridepublic void del(int id) {Session session = sessionFactory.getCurrentSession();User user = this.getById(id);session.delete(user);}@Overridepublic void update(User user) {Session session = sessionFactory.getCurrentSession();session.update(user);}@Overridepublic User getById(int id) {Session session = sessionFactory.getCurrentSession();return (User) session.get(User.class, id);}@SuppressWarnings("unchecked")@Overridepublic List<User> getByDeptId(int deptId) {Session session = sessionFactory.getCurrentSession();Query query = session.createQuery("select new com.hanhf.oa.basic.user.bean.User(u.id, u.name, u.loginName, u.phone, u.sex, u.email, u.remark, u.deptId, d.name) from User u, Dept d where u.deptId=d.id and u.deptId="+ deptId);return (List<User>) query.list();}@SuppressWarnings("unchecked")@Overridepublic List<User> getAll() {Session session = sessionFactory.getCurrentSession();Query query = session.createQuery("select new com.hanhf.oa.basic.user.bean.User(u.id, u.name, u.loginName, u.phone, u.sex, u.email, u.remark, u.deptId, d.name) from User u, Dept d where u.deptId=d.id");return (List<User>) query.list();}// getter & setterpublic SessionFactory getSessionFactory() {return sessionFactory;}public void setSessionFactory(SessionFactory sessionFactory) {this.sessionFactory = sessionFactory;}}

  (4) UserBiz接口和实现类:
public interface UserBiz {void add(User user);void del(int id);void update(User user);User getById(int id);List<User> getByDeptId(int deptId);List<User> getAll();}

@Service@Transactionalpublic class UserBizImpl implements UserBiz {@Resourceprivate UserDao userDao;@Overridepublic void add(User user) {userDao.add(user);}@Overridepublic void del(int id) {userDao.del(id);}@Overridepublic void update(User user) {userDao.update(user);}@Overridepublic User getById(int id) {return userDao.getById(id);}@Overridepublic List<User> getByDeptId(int deptId) {return userDao.getByDeptId(deptId);}@Overridepublic List<User> getAll() {return userDao.getAll();}// getter & setterpublic UserDao getUserDao() {return userDao;}public void setUserDao(UserDao userDao) {this.userDao = userDao;}}

  (5) UserAction类:
@Results({ @Result(name = "list", location = "/manage/basic/userList.jsp"),@Result(name = "add", location = "/manage/basic/userAddEdit.jsp"),@Result(name = "edit", location = "/manage/basic/userAddEdit.jsp"), })public class UserAction {@Resourceprivate UserBiz userBiz; // 业务逻辑层对象(员工)@Resourceprivate DeptBiz deptBiz; // 业务逻辑层对象(部门)private User user; // 实体对象(员工)private List<User> userList; // 列表对象(员工)private List<Dept2> deptList; // 列表对象(部门)private int userId; // id(员工)private int deptId; // id(部门)private String oper; // 用于区分新增或修改private String msg; // 错误提示// 跳转到列表页@Action(value = "toUserList")public String toList() {// 取得部门列表getDeptTree();// 取得员工列表if (deptId != 0) {userList = userBiz.getByDeptId(deptId);}return "list";}// 跳转到新增页@Action(value = "toUserAdd")public String toAdd() {// 初始化员工对象user = new User();// 取得部门列表getDeptTree();oper = "add";return "add";}// 跳转到修改页@Action(value = "toUserEdit")public String toEdit() {// 取得员工对象user = userBiz.getById(userId);// 取得部门列表getDeptTree();oper = "edit";return "edit";}// 新增动作@Action(value = "userAdd")public String add() {try {// 保存员工对象userBiz.add(user);// 取得部门列表getDeptTree();// 跳转到列表页return "list";} catch (Exception e) {e.printStackTrace();// 错误提示msg = "员工新增失败!";// 跳转回新增页return "add";}}// 修改动作@Action(value = "userUpdate")public String update() {try {// 保存员工对象userBiz.update(user);// 取得部门列表getDeptTree();// 跳转到列表页return "list";} catch (Exception e) {e.printStackTrace();// 错误提示msg = "员工修改失败!";// 跳转回修改页return "edit";}}// 删除动作@Action(value = "userDel")public String del() {try {// 删除对象userBiz.del(userId);} catch (Exception e) {e.printStackTrace();}// 取得部门列表getDeptTree();// 跳转到列表页return "list";}// 取得部门列表private void getDeptTree() {deptList = deptBiz.getTree();for (Dept2 dept : deptList) {String name = dept.getName();if (dept.getLevel() > 1) {name = "└" + name;}for (int i = 1; i < dept.getLevel(); i++) {name = " " + name;}dept.setName(name);}}// getter & setter// ...
}

  (6) JSP页面

  A、页面路径:

  

  B、userList.jsp代码:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>OA系统-员工管理</title></head><body><form id="form1" name="form1" method="post" action="toUserList.action">请选择部门: <select id="deptId" name="deptId"><option value="0">---请选择部门---</option><c:forEach items="${deptList}" var="dept"><option value="${dept.id}"<c:if test="${dept.id==deptId}">selected="selected"</c:if>>${dept.name}</option></c:forEach></select> <input type="submit" value="查询员工" />  <input type="button"value="新增员工"onclick="javascript:window.location.href='toUserAdd.action';" /></form><table border="1"><tr><td>登录名</td><td>姓名</td><td>所属部门</td><td>性别</td><td>操作</td></tr><c:forEach items="${userList}" var="user"><tr><td>${user.loginName}</td><td>${user.name}</td><td>${user.deptName}</td><td>${user.sex}</td><td><a href="userDel.action?userId=${user.id}">删除</a> <ahref="toUserEdit.action?userId=${user.id}">修改</a> <ahref="resetPassword.action?userId=${user.id}">初始化密码</a></td></tr></c:forEach></table></body></html>

  C、userAddEdit.jsp代码:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>OA系统-员工管理</title><script>function saveUser() {var oper = form1.oper.value;if (oper == "add") {form1.action = "userAdd.action";} else if (oper == "edit") {form1.action = "userUpdate.action";}form1.submit();}</script></head><body><form id="form1" name="form1" method="post"><input id="oper" name="oper" type="hidden" value="${oper}" /><inputname="user.id" type="hidden" value="${user.id}" /> <inputname="user.loginPassword" type="hidden" value="${user.loginPassword}" /><table><tr><td>所属部门:</td><td><select name="user.deptId"><option value="0">---请选择部门---</option><c:forEach items="${deptList}" var="dept"><option value="${dept.id}"<c:if test="${dept.id==user.deptId}">selected="selected"</c:if>>${dept.name}</option></c:forEach></select></td></tr><tr><td>登录名:</td><td><input name="user.loginName" type="text"value="${user.loginName}" /></td></tr><tr><td>姓名:</td><td><input name="user.name" type="text" value="${user.name}" /></td></tr><tr><td>性别:</td><td><input name="user.sex" type="radio" value="男"<c:if test="${user.sex=='男'}">checked="checked"</c:if> />男 <inputname="user.sex" type="radio" value="女"<c:if test="${user.sex=='女'}">checked="checked"</c:if> />女</td></tr><tr><td>电话:</td><td><input name="user.phone" type="text" value="${user.phone}" /></td></tr><tr><td>email:</td><td><input name="user.email" type="text" value="${user.email}" /></td></tr><tr><td>备注:</td><td><input name="user.remark" type="text"value="${user.remark}" /></td></tr><tr><td> </td><td><input type="button" value="保存" onclick="saveUser();" /> <inputtype="button" value="返回"onclick="javascript:window.location.href='toUserList.action';" /></td></tr></table></form></body></html>


0 0
原创粉丝点击