当前位置:   article > 正文

复选框批量删除-ajax-ssm项目(update实现假删除)_jsp+ajax多选删除

jsp+ajax多选删除

文末第7部分有效果演示!!!

目录

1.StudentMapper.xml文件中配置的sql语句

2.StudentMapper接口层

3.设计页面复选框全选与各自选择

4.通过js和ajax发出请求到Controller

5.StudentService层(编写实现类)

6.StudentController层

7.效果图演示


参考博客:(104条消息) ssm框架下进行的批量删除_liqz666的博客-CSDN博客_ssm批量删除

鉴于上述文章,我在自己的项目中成功实现批量删除,但其中做了很多细节上的修改,由此总结以下我自己的逻辑代码。

1.StudentMapper.xml文件中配置的sql语句

此处用的是假删除,即通过update语句将学生表中的sflag字段设置为1,1表示被删除,0为默认选项,表示正常的未被删除学生,所以,在进行查询所有显示时,需要通过以下方式来查询(带条件,判断sflag的值),而不是通过delete。

  1. <select id="selectAllStudents" resultType="student">
  2. SELECT *
  3. FROM student s
  4. INNER JOIN class c ON s.scid = c.cid
  5. WHERE s.sflag = 0
  6. </select>

所以在进行修改时,对应的sql语句如下,注意由于批量删除不确定传回来的id个数,所以使用数组类型进行删除。当然使用delete也是可以的,只需要更换一些sql语句即可,即delete from student where sid in...(同下)。

  1. <update id="deleteSomeStudent" parameterType="java.lang.Integer">
  2. update student set sflag=1
  3. where sid in
  4. <foreach collection="array" item="sids" index="no" open="(" separator="," close=")">
  5. #{sids}
  6. </foreach>
  7. </update>

2.StudentMapper接口层

  1. @Repository
  2. public interface StudentMapper {
  3. //省略了其他方法的定义
  4. Integer deleteSomeStudent(String[] sids);
  5. }

3.设计页面复选框全选与各自选择

复选框简单样式:重点为第6行即第一个<th>与第18行即第一个<td>

  1. <!-- 显示表格数据 -->
  2. <div class="row" >
  3. <div class="col-md-12">
  4. <table id="form" class="table table-striped" id="students_table">
  5. <tr>
  6. <th style="width: 10px;"><input id="SelectAll" name="selectall" type="checkbox"/></th>
  7. <th>学号</th>
  8. <th>姓名</th>
  9. <th>性别</th>
  10. <th>邮箱</th>
  11. <th>班级</th>
  12. <th>操作</th>
  13. </tr>
  14. <c:forEach items="${pageInfo.list}" var="stu">
  15. <tr>
  16. <td>
  17. <label style="color:#ff7f65">
  18. <input id="" name="sid" value="${stu.sid}" class="SelectSingle" type="checkbox">
  19. </label>
  20. </td>
  21. <td>${stu.sid}</td>
  22. <td>${stu.sname}</td>
  23. <td>${stu.ssex=="0"?"男":"女"}</td>
  24. <td>${stu.semail}</td>
  25. <td>${stu.scid=="1"?"软工1班":(stu.scid=="2"?"软工2班":"软工3班")}</td>
  26. <td>
  27. <button class="btn btn-primary btn-sm">
  28. <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
  29. <%-- <a href="${APP_PATH }/toUpdateStudent" style="color: white">编辑</a>--%>
  30. <a href="${APP_PATH}/toUpdateStudent/${stu.sid}" style="color: white">编辑</a>
  31. </button>
  32. <button class="btn btn-danger btn-sm">
  33. <span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
  34. <%-- <a href="/deleteStudentById" style="color: white" onclick="return confirm('你确定要删除该学生的所有信息吗')">--%>
  35. <a href="${APP_PATH}/deleteStudentById?sid=${stu.sid}" style="color: white" onclick="return confirm('你确定要删除该学生的所有信息吗')">
  36. 删除
  37. </a>
  38. </button>
  39. </td>
  40. </tr>
  41. </c:forEach>
  42. </table>
  43. </div>
  44. </div>

 复选框绑定事件

  1. <script src="./jquery-3.3.1.min.js"></script>
  2. <script type="text/javascript">
  3. $(function () {
  4. $('#SelectAll').click(function (e) {
  5. $('.SelectSingle').prop('checked',this.checked);
  6. });
  7. $(".SelectSingle").click(function () {
  8. if ($(".SelectSingle").length==$(".SelectSingle:checked").length){
  9. $("#SelectAll").prop("checked",true);
  10. }else {
  11. $("#SelectAll").prop("checked",false);
  12. }
  13. });
  14. });
  15. </script>

注意批量删除按钮设定,重点为<button>标签中的属性值,<span>标签用于设定样式。

  1. <button id="btn2" onclick="return todelect()" class="btn btn-danger">
  2. <span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
  3. 批量删除
  4. </button>

4.通过js和ajax发出请求到Controller

  1. <script src="./jquery-3.3.1.min.js"></script>
  2. <script type="text/javascript">
  3. function todelect(){//undefined
  4. var Checkbox=false;//默认复选框为空
  5. var count=0;//用于记录选中要删除的条数
  6. $("input[name='sid']").each(function(){//undefined//获取复选框节点id
  7. if (this.checked==true) {
  8. Checkbox=true; //已勾选
  9. count++;
  10. }
  11. });
  12. if (Checkbox){//undefined//boolean值为true
  13. var t=confirm("您确认要删除选中的这"+count+"条内容吗?");//弹出对话进行警告
  14. if (t==false) return false; //不勾选不处理
  15. obj = document.getElementsByName("sid");//将复选框定义成一个jquery对象
  16. check_val = [];//定义一个数组
  17. for(k in obj){//k相当于i,往这个jquery对象添加勾选的id;
  18. if(obj[k].checked)//选中的都放进 数组里
  19. check_val.push(obj[k].value);
  20. }
  21. $.ajax({//利用ajax发出请求
  22. type:"POST",//post类型
  23. url:"${APP_PATH}/deleteSomeStudent?sids="+check_val, //向Controller里的deleteSelect传输ids
  24. success:function(data){//undefined//删除成功后,deleteMany会返回一个"ok";
  25. if(data=="ok"){//undefined
  26. alert("删除成功!");//返回ok后弹出一个对话框。
  27. location.href="${APP_PATH}/list";//相当于刷新界面
  28. }
  29. }
  30. });
  31. }
  32. else{//undefined
  33. alert("请选择您要删除的内容!");//不勾选不提交,弹出警告框。
  34. return false;
  35. }
  36. }
  37. </script>

批量删除的前提是做好分页查询。 关于分页的相关操作可看我的另一篇博客-->ssm使用pageHelper进行分页_咻咻咻0v0的博客-CSDN博客

5.StudentService层(编写实现类)

IStudentService接口:

  1. public interface IStudentService {
  2. Integer deleteSomeStudent(String[] sids);
  3. }

StudentService实现类:

  1. @Service
  2. public class StudentService implements IStudentService {
  3. @Autowired
  4. private StudentMapper studentMapper;
  5. @Override
  6. public Integer deleteSomeStudent(String[] sids) {
  7. return studentMapper.deleteSomeStudent(sids);
  8. }
  9. }

6.StudentController层

  1. @Controller
  2. public class StudentController {
  3. @Autowired
  4. private IStudentService studentService;
  5. @RequestMapping("/deleteSomeStudent")
  6. @ResponseBody
  7. public String deleteSomeStudent(String sids,Model model){
  8. System.err.println(sids);
  9. String[] d=sids.split(",");//把数组里的值逗号隔开
  10. System.out.println("批量删除成功");
  11. studentService.deleteSomeStudent(d);
  12. return "ok";//返回给ajax
  13. }
  14. }

7.效果图演示

最终效果页面若不选中任何数据,会弹出弹框提示“请选择您要删除的内容!”

最终效果页面点击全选后: 

 点击批量删除后,弹出谈弹框,其中包括查询到的n条数据:

 点击弹框中的确认后,先弹出弹框提示删除成功: 

点击确定后更新列表中的数据,此时第一页的数据已被全部删除,展示的数据从原来的第二页的第一条数据开始,在下图可以看到记录条数与页数均相应变化,删除成功后可在任意选择数据进行删除: 

从下图数据库中可以看到,数据中的sflag标志发生了变化,但实际上数据仍存在,实现了假删除:

over!

平平无奇小白程序媛一枚,欢迎各位大佬交流指教,如有不正确的地方,欢迎留言改正,谢谢!!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/100802
推荐阅读
相关标签
  

闽ICP备14008679号