1. 程式人生 > >Maven+SSM框架例項(二)——增刪查的功能

Maven+SSM框架例項(二)——增刪查的功能

該部落格沿用上一篇部落格,是之前專案例項的補充

一、增加功能

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>