<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>VUE联系</title>
<!--自动识别最新稳定版本-->
<!--<script src="https://unpkg.com/vue/dist/vue.min.js"></script>-->
<!--<script src="https://unpkg.com/vue@2.6.10/dist/vue.min.js"></script>-->
<script src="../../js/jquery-3.3.1.min.js"></script>
<style type="text/css">
table{
border: black 1px solid;
}
table td{border:1px solid #00b7ee;background-color: #6ce26c }
th{background-color: #d5008f}
</style>
</head>
<body>
<table CELLPADDING="1" CELLSPACING="1"> <input type="button" onclick="batchDelete()" value="删除"/>
<input type="button" onclick="boxAll()" value="反选/全选"/> <tr>
<th>编号</th>
<th>电话</th>
<th>密码</th>
<th>邮箱</th>
<th>时间</th>
</tr>
<#if userList??>
<#list userList as item>
<tr>
<td>
<input type="checkbox" name="userNmae" value="${item.id}" />
</td>
<td>
<span>${item.phone}</span>
</td>
<td>
<span>${item.password}</span>
</td>
<td>
<span>${item.email}</span>
</td>
<td>
<span>${item.times}</span>
</td>
</tr>
</#list>
</#if> </table>
</body>
<script>
function batchDelete(){
//判断至少选择了一项
var checkedNum = $("input[type='checkbox']:checked").length;
if (checkedNum == 0) {
alert("至少选择一项删除!");
return;
}
if (confirm("确定删除选中的用户?")) {
var userList = new Array();
$("input[type='checkbox']:checked").each(function(){
userList.push($(this).val());
});
$.ajax({
type : "post",
url : "/user/batchDelete",
data : {"userList" : userList.toString()},
dataType:"JSON",
success : function(){
alert("删除成功!");
location.reload();
},
error : function(){
alert("刪除失败!")
}
});
}
} //全选 全不选
var flag=true;
function boxAll(){
var cd=$("input[type=checkbox]");
for (var i=0;i<cd.length;i++) {
cd[i].checked=flag;
}
flag=!flag;
} </script>
</html>

  public String batchDelete(HttpServletRequest request,HttpServletResponse response){
Result result=new Result();
String userIdListString= request.getParameter("userList");
String[] userIdList=userIdListString.split(","); try{
int num= this.userService.batchDelete(userIdList);
}catch (Exception e){
result.setMessage(ExceptionMes.Error_Message02);
result.setNo(ExceptionMes.Error_Code02);
log.error(JSON.toJSONString(result));
}
result.setMessage(ExceptionMes.Error_Message17);
result.setNo(ExceptionMes.Error_Code17);
return JSON.toJSONString(result);
}

 <delete id="batchDelete">
DELETE FROM `user` where `id` in
<foreach collection="array" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
</delete>

分别问前端,后台,和MAPPER.

这里注意前端的Array.toString  到后台接收时只是一个集合的字符串,如果需要传入数组或者集合,需要使用String.split(",")进行分割转换。
                                <!--collection="array"入残维数组-->
                               <!--collection="ids"入残为M安排-->
                               <!--collection="list"入残为集合-->

这三种情况对对号入座我就不多少了

JAVAWEB开发批量删除,SSM的几种情况的更多相关文章

  1. Pandas删除数据的几种情况

    开始之前,pandas中DataFrame删除对象可能存在几种情况 1.删除具体列 2.删除具体行 3.删除包含某些数值的行或者列 4.删除包含某些字符.文字的行或者列 本文就针对这四种情况探讨一下如 ...

  2. ArrayList循环遍历并删除元素的几种情况

    如下代码,想要循环删除列表中的元素b,该怎么处理? public class ListDemo { public static void main(String[] args) { ArrayList ...

  3. 谈谈使用Redis缓存时批量删除的几种实现

    前言 在使用缓存的时候,我们时不时会遇到这样一个需求,根据缓存键的规则去批量删除这些数据,比较常见的就是按前缀去删除. 举个简单的例子,Redis中现在有几百个商品的数据,这些数据的key值是有一定规 ...

  4. iOS开发:一个高仿美团的团购ipad客户端的设计和实现(功能:根据拼音进行检索并展示数据,离线缓存团购数据,浏览记录与收藏记录的批量删除等)

    大致花了一个月时间,利用各种空闲时间,将这个客户端实现了,在这里主要是想记录下,设计的大体思路以及实现过程中遇到的坑...... 这个项目的github地址:https://github.com/wz ...

  5. mybatis 根据id批量删除的两种方法

    原文:https://blog.csdn.net/qq_40010745/article/details/81032218 mybatis 根据id批量删除的两种方法   第一种,直接传递给mappe ...

  6. ssm批量删除

    ssm批量删除 批量删除:顾名思义就是一次性删除多个.删除是根据前台传给后台的id,那么所谓批量删除,就是将多个id传给后台,那么如何传过去呢,前后台的交互该如何实现? 1.jsp页面,先选中所有的要 ...

  7. ssm框架下怎么批量删除数据?

    ssm框架下批量删除怎么删除? 1.单击删除按钮选中选项后,跳转到js函数,由函数处理 2. 主要就是前端的操作 js 操作(如何全选?如何把选中的数据传到Controller中) 3.fun()函数 ...

  8. iOS开发——UI进阶篇(四)tableView的全局刷新,局部刷新,左滑操作,左滑出现更多按钮,进入编辑模式,批量删除,自定义批量删除

    首先创建项目,在storyboard如下布局控件,设置好约束 然后创建cell模型类XMGWineCell数据模型类XMGWine创建UITableView,设置数据源协议,实现数据源方法懒加载数据这 ...

  9. SSM实现批量删除功能

    批量删除功能的实现 其实实现这个功能还是挺简单的 因为我这是直接拼接的,所以用了DOM方法来获取id话不多说直接上代码首先是复选框全选和反选这里的话 获取最上面一个复选框的状态同步到拼接的复选框  $ ...

随机推荐

  1. swagger是什么(十六)

    前言: swagger:神气十足,大摇大摆 在用Springboot进行开发时,有的实体类上用到了注解@ApiModelProperty("接受人代码"),特此整理此注解的出处及作 ...

  2. 第十九篇 -- QTableWidget的使用

    QTableWidget的一些常用方法 下面两个类可以根据自己的情况自定义. 单元格类型的类: class CellType(Enum): ctKey = 1000 ctPath = 1001 ctI ...

  3. 一个完整的socket recv()案例,包括解决粘包、服务器主动推数据的问题

    前言: 本文是针对socket长连接(涉及到服务器主动推数据),每个包头的拼接算法和长度都不一样,具体的包头小伙伴们问自己公司的开发吧,本文只是提供思路.再啰嗦一句:recv到的包头中数字进行某种运算 ...

  4. SQL Challenges靶机

    http://www.zixem.altervista.org/SQLi/ 第一关 http://www.zixem.altervista.org/SQLi/level1.php?id=1 and 1 ...

  5. for,while,until三种循环

    目录 一.echo命令-改变输出字符串或者提取shell变量的值 1.1..格式 2.2.常用参数 二.for循环语句 2.1.for循环结构 示例1 示例2 三.while循环语句结构 示例1 示例 ...

  6. C# / vb.net 给PDF 添加可视化和不可见数字签名

    本文通过C#程序代码展示如何给PDF文档添加可视化数字签名和不可见数字签名.可视化数字签名,即在PDF文档中的指定页面位置添加签名,包含相关文字信息和签名图片等:不可见数字签名,即添加签名时不在文档中 ...

  7. Flutter学习(7)——网络请求框架Dio简单使用

    原文地址: Flutter学习(7)--网络请求框架Dio简单使用 | Stars-One的杂货小窝 Flutter系列学习之前都是在个人博客发布,感兴趣可以过去看看 网络请求一般APP都是需要的,在 ...

  8. linux 20个常用命令

    一.文件和目录 1. cd命令 (它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径) cd /home    进入 '/ home' 目录 cd ..       ...

  9. 面试必备:Android Activity启动流程源码分析

    最近大致分析了一把 Activity 启动的流程,趁着今天精神状态好,把之前记录的写成文章. 开门见山,我们直接点进去看 Activity 的 startActivity , 最终,我们都会走到 st ...

  10. 说实话,Android开发月薪3W,谁不酸呢?

    近期有个网友在某匿名区晒字节跳动Offfer,毕业一年月薪3W,引发众多读者羡慕,纷纷留言酸了.酸了.但进大厂的要求还是蛮高的,需要在技术实力上有一定的积累,今天给大家分享一份高质量笔记, 助力大家技 ...