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

  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类,添加方法实现:

	@Override
	public 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类,添加方法实现:

	@Override
	public 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注解:

	@Transient
	public 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();
}

@Repository
public class UserDaoImpl implements UserDao {
	@Resource
	private SessionFactory sessionFactory;

	@Override
	public void add(User user) {
		Session session = sessionFactory.getCurrentSession();
		session.save(user);
	}

	@Override
	public void del(int id) {
		Session session = sessionFactory.getCurrentSession();
		User user = this.getById(id);
		session.delete(user);
	}

	@Override
	public void update(User user) {
		Session session = sessionFactory.getCurrentSession();
		session.update(user);
	}

	@Override
	public User getById(int id) {
		Session session = sessionFactory.getCurrentSession();
		return (User) session.get(User.class, id);
	}

	@SuppressWarnings("unchecked")
	@Override
	public 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")
	@Override
	public 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 & setter

	public 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
@Transactional
public class UserBizImpl implements UserBiz {
	@Resource
	private UserDao userDao;

	@Override
	public void add(User user) {
		userDao.add(user);
	}

	@Override
	public void del(int id) {
		userDao.del(id);
	}

	@Override
	public void update(User user) {
		userDao.update(user);
	}

	@Override
	public User getById(int id) {
		return userDao.getById(id);
	}

	@Override
	public List<User> getByDeptId(int deptId) {
		return userDao.getByDeptId(deptId);
	}

	@Override
	public List<User> getAll() {
		return userDao.getAll();
	}

	// getter & setter

	public 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 {
	@Resource
	private UserBiz userBiz; // 业务逻辑层对象(员工)
	@Resource
	private 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="新增员工"
			οnclick="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> <a
					href="toUserEdit.action?userId=${user.id}">修改</a> <a
					href="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}" /><input
			name="user.id" type="hidden" value="${user.id}" /> <input
			name="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> />男 <input
					name="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="保存" οnclick="saveUser();" /> <input
					type="button" value="返回"
					οnclick="javascript:window.location.href='toUserList.action';" /></td>
			</tr>
		</table>
	</form>
</body>
</html>


  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值