该博客沿用上一篇博客,是之前项目实例的补充
一、增加功能
Dao类(StudentDao):
在该接口加上添加学生的方法,通过前端传来的姓名——sname,性别——sex,birthplace——出生地。这里的cid还需要通过classname来查询获得。
(稍后会在Controller类中说明)
void addStudent(@Param("sname") String sname, @Param("cid") int cid,
@Param("sex") String sex, @Param("birthplace") String birthplace);//添加学生
在mapper文件中填写,添上insert功能:
<insert id="addStudent">
insert into student (sname,cid,sex,birthplace) values
(#{sname},#{cid},#{sex},#{birthplace})
</insert>
StudentService接口:
//添加学生
void addStudent(String sname, int cid, String sex, String birthplace);
StudentServiceImpl实现类:
//提交事务,出了查询以外的增删改,都要进行事务的提交
@Transactional(propagation = Propagation.REQUIRED)
public void addStudent(String sname, int cid, String sex, String birthplace) {
studentDao.addStudent(sname, cid, sex, birthplace);
}
StudentAction控制器:
//去添加学生
@RequestMapping("/toAddStudent")
public String toAddStudent() {
return "add";
}
//添加学生
@RequestMapping("/addStudent")
public String addStudent(@RequestParam("sname") String sname, @RequestParam("classname") String classname,
@RequestParam("sex") String sex, @RequestParam("birthplace") String birthplace,
HttpServletRequest request) {
//根据classname查出cid
Integer cid = studentService.findClassBycname(classname);
if (cid == null) {
String msg = "输入的班级名有误!请重新输入";
request.setAttribute("msg",msg);
return "add";
} else {
studentService.addStudent(sname, cid, sex, birthplace);
return "forward:/findall.action";
}
}
写了两个方法是因为有个添加学生的链接跳转到填写信息的页面,所以要去添加,然后才是真正的添加。
add.jsp页面代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<div style="text-align: center;">
<label style="color: red">${msg}</label>
<form action="/addStudent.action" method="post">
学生姓名:<input type="text" name="sname" /><br/>
班级:<input type="text" name="classname" /><br/>
性别:<input type="radio" name="sex" value="男" checked="checked" />男
<input type="radio" name="sex" value="女" style="margin-left: 5px" />女<br/>
出生地:<input type="text" name="birthplace" /><br/>
<input type="submit" value="提交">
</form>
</div>
</body>
</html>
二、删除功能
Dao接口:
void deleteStudent(int sid);//根据学号删除学生
mapper文件:
<delete id="deleteStudent" parameterType="Integer">
delete from student where sid = #{sid}
</delete>
Service层就不赘述了
Controller:
//删除学生
@RequestMapping("/deleteStudent")
public String deleteStudent(@RequestParam("sid")int sid) {
studentService.deleteStudent(sid);
return "forward:/findall.action";
}
我是在显示所有的列表旁边多了个删除的按钮,点击删除后再查询全部。
show.jsp:
<a href="/index.action">返回主页</a><br />
<table border="1">
<tr>
<td>学号</td>
<td>班级</td>
<td>姓名</td>
<td>性别</td>
<td>出生地</td>
<td colspan="2">操作</td>
</tr>
<c:forEach items="${studentlist }" var="list">
<tr>
<td>${list.sid}</td>
<td>${list.classes.classname}</td>
<td>${list.sname}</td>
<td>${list.sex}</td>
<td>${list.birthplace}</td>
<td><a href="javascript:if(confirm('确实要删除该学生吗?'))location='/deleteStudent.action?sid=${list.sid}'">删除</a></td>
<td><a href="/toupdate.action?sid=${list.sid}">修改</a></td>
</tr>
</c:forEach>
</table>
三、修改功能
Dao接口:
void updateStudent(@Param("sid") int sid, @Param("sname") String sname, @Param("cid") int cid, @Param("sex") String sex,
@Param("birthplace") String birthplace);
mapper文件:
<update id="updateStudent">
update student set sname = #{sname}, cid = #{cid}, sex = #{sex}, birthplace = #{birthplace} WHERE sid = #{sid}
</update>
Controller类:
//去修改的页面
@RequestMapping("/toupdate")
public String toUpdate(@RequestParam("sid") int sid, HttpServletRequest request) {
Student student = studentService.findBySid(sid);
request.setAttribute("student",student);
return "update";
}
//修改学生信息
@RequestMapping("/update")
public String update(@RequestParam("sid") int sid,@RequestParam("sname")String sname,@RequestParam("classname") String classname,
@RequestParam("sex") String sex,@RequestParam("birthplace")String birthplace,
HttpServletRequest request) {
Integer cid = studentService.findClassBycname(classname);
if (cid == null) {
String msg = "输入的班级名有误!请重新输入";
request.setAttribute("msg",msg);
Student student = new Student(sid, sname, new Classes(0, classname), sex, birthplace);
request.setAttribute("student",student);
return "update";
} else {
studentService.updateStudent(sid,sname,cid,sex,birthplace);
return "forward:/findall.action";
}
}
update.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<div style="text-align: center;">
<label style="color: red">${msg}</label>
<form action="/update.action?sid=${student.sid}" method="post">
学生姓名:<input type="text" name="sname" value="${student.sname}" /><br/>
班级:<input type="text" name="classname" value="${student.classes.classname}" /><br/>
性别:<input type="radio" name="sex" value="男" checked="checked" />男
<input type="radio" name="sex" value="女" style="margin-left: 5px" />女<br/>
出生地:<input type="text" name="birthplace" value="${student.birthplace}" /><br/>
<input type="submit" value="提交">
</form>
</div>
</body>
</html>