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
- JavaEE项目实战(OA系统)之十四_员工管理之三
- JavaEE项目实战(OA系统)之十四_员工管理之二
- JavaEE项目实战(OA系统)之十五_员工管理之四
- JavaEE项目实战(OA系统)之十三_员工管理之一
- JavaEE项目实战(OA系统)之九_部门管理之三
- JavaEE项目实战(OA系统)之六_三大框架整合之三
- JavaEE项目实战(OA系统)之八_部门管理之二
- JavaEE项目实战(OA系统)之十_部门管理之四
- JavaEE项目实战(OA系统)之十一_部门管理之五
- JavaEE项目实战(OA系统)之十二_部门管理之六
- JavaEE项目实战(OA系统)之五_三大框架整合之二
- JavaEE项目实战(OA系统)之二十_流程审批之三
- JavaEE项目实战(OA系统)之七_部门管理之一
- JavaEE项目实战(OA系统)之三_数据库实现
- JavaEE项目实战(OA系统)之四_三大框架整合之一
- JavaEE项目实战(OA系统)之十九_流程审批之二
- JavaEE项目实战(OA系统)之二十一_流程审批之四
- JavaEE项目实战(OA系统)之二_数据库设计
- Android:使用VideoView播放视频
- Ioc中装配bean的几种方式
- 他只掌握了这3点,却在现货投资市场中挣走千万!
- 安卓学习心得,学习步骤 入门书籍推荐
- 第三周 项目1-顺序表的基本运算
- JavaEE项目实战(OA系统)之十四_员工管理之三
- App Transport Security(ATS)
- windows 连接到VM linux 通过FTP协议传输文件
- 基于NGUI的unity界面管理的讨论
- 2016年移动广告聚合平台浅析
- MethodHandles
- 【第2周 项目2 - 程序的多文件组织】
- 视频直播
- express command not found