1 利用Spring+MyBatis实现员工更新功能。

参考答案

本案例的课上案例“重构员工列表显示”的基础上完成。详细步骤如下:

步骤一:修改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