参考答案
本案例的课上案例“重构员工列表显示”的基础上完成。详细步骤如下:
步骤一:修改EmpDAO接口
修改EmpDAO接口,添加如图-1所示的两个方法。
图 - 1
步骤二:修改EmpMapper.xml文件
修改EmpMapper.xml文件,添加如图-2所示的代码:
图– 2
步骤三:修改TestEmpDAO类
修改TestEmpDAO类,添加如图-3所示的测试方法testFindById。测试过程省略。
图– 3
步骤四:修改TestEmpDAO类
修改TestEmpDAO类,添加如图-4所示的测试方法testUpdate。测试过程省略。
图– 4
步骤五:准备页面中部门的下拉列表数据
1. 添加实体类Dept,该类的代码如下所示:
package org.tarena.entity; public class Dept{ private Integer deptno; private String dname; private String loc; public Integer getDeptno() { return deptno; } public void setDeptno(Integer deptno) { this.deptno = deptno; } public String getDname() { return dname; } public void setDname(String dname) { this.dname = dname; } public String getLoc() { return loc; } public void setLoc(String loc) { this.loc = loc; } }
2.添加DeptMapper.xml文件,该文件的代码如下所示:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> <mapper namespace="org.tarena.dao.DeptDAO"> <select id="findAllDept" resultType="org.tarena.entity.Dept"> select DEPTNO,DNAME,LOC from T_DEPT </select> </mapper>
3. 添加DeptDAO接口,该接口的代码如下所示:
package org.tarena.dao; import java.util.List; import org.tarena.annotation.MyBatisRepository; import org.tarena.entity.Dept; @MyBatisRepository public interface DeptDAO { public List<Dept> findAllDept(); }
4. 添加测试类TestDeptDAO,测试过程省略。该类的代码如下所示:
package org.tarena.test; import java.io.IOException; import java.util.List; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.tarena.dao.DeptDAO; import org.tarena.entity.Dept; public class TestDeptDAO { @Test public void testFindAll() throws IOException{ String conf = "applicationContext.xml"; ApplicationContext ac = new ClassPathXmlApplicationContext(conf); DeptDAO mapper = ac.getBean("deptDAO",DeptDAO.class); List<Dept> list = mapper.findAllDept(); for(Dept d : list){ System.out.println(d.getDeptno()+" "+d.getDname()); } } }
到此,准备页面中部门的下拉列表数据的过程完成。
步骤六:添加UpdateEmpController类
UpdateEmpController作为修改员工信息的控制器,其代码如下所示:
package org.tarena.web; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.tarena.dao.DeptDAO; import org.tarena.dao.EmpDAO; import org.tarena.entity.Dept; import org.tarena.entity.Emp; @Controller public class UpdateEmpController { private EmpDAO empDao; private DeptDAO deptDao; @Autowired public void setEmpDao(EmpDAO empDao) { this.empDao = empDao; } @Autowired public void setDeptDao(DeptDAO deptDao) { this.deptDao = deptDao; } @RequestMapping("/emp/toUpdate") public String toUpdate(@RequestParam("empno") String empno,Model model){ Emp e = empDao.findById(Integer.parseInt(empno)); model.addAttribute("emp", e); return "updateEmp"; } @RequestMapping("/emp/update") public String update(Emp emp){ empDao.updateEmp(emp); return "redirect:../emp/list.do"; } @ModelAttribute("depts") public List<Dept> getAllDept() { return deptDao.findAllDept(); } }
步骤七:修改emp_list.jsp
修改emp_list.jsp页面,修改的代码如图-5所示。
图– 5
步骤八:添加updateEmp.jsp
添加updateEmp.jsp页面,代码如下所示:
<%@page pageEncoding="utf-8" contentType="text/html;charset=utf-8"%> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> <html> <title>表单标签-更新初始显示</title> <body> <form:form action="../emp/update.do" method="post" commandName="emp"> <form:hidden path="empno"/> 姓名:<form:input path="ename"/><br> 职位:<form:select path="job" > <form:option value="SALESMAN" label="SALESMAN" /> <form:option value="MANAGER" label="MANAGER" /> <form:option value="CLERK" label="CLERK" /> <form:option value="PRESIDENT" label="PRESIDENT" /> <form:option value="ANALYST" label="ANALYST" /> </form:select><br> 管理者:<form:input path="mgr"/><br> 入职时间:<form:input path="hiredate"/><br> 工资:<form:input path="sal"/><br> 奖金:<form:input path="comm"/><br> 所在部门:<form:select path="deptno" items="${depts}" itemLabel="dname" itemValue="deptno" /><br/> <input type="submit" value="修改"> </form:form> </body> </html>
步骤九:运行
访问网址“http://localhost:8080/工程名/emp/list.do”,页面显示效果如图-6所示。
图- 6
然后,点击第一行后面的“修改”(以修改第一行为例),进入如图-7所示的页面。
图– 7
修改如图-8所示的姓名和时间。
图– 8
点击“修改”按钮,返回到如图-9所示的页面。
图– 9