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>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值