效果展示图:


代码部分:

JSP客户端页面部分:
这里用from表单来接收提交的数据传到controller层来进行批量删除操作,用来显示勾选选项,其中的name属性参数都用同一个,然后再控制层接收的时候回自动封装成一个代表id集合的数组,具体代码如下:

<form action="delall" method="post">
    <p><a href="/SSM1/addpage">新增数据</a></p>
    <p><input type="submit" value="批量删除"/></p>
    <table border="1">
    	<tr><td>全选<input type="checkbox" value="" name="selectall"></td><td>序号</td><td>姓名</td><td>生日</td><td>性别</td><td>班级</td><td>删除</td><td>修改</td></tr>
    	<!-- ${pageinfo.list}这个是分页工具类封装好的集合 -->
    	<c:forEach items="${pageinfo.list}" var="s" varStatus="i">
    		<!-- varStatus="i"和${i.count}来代表循环的次数,用来代替id序号 -->
    		<tr><td><input type="checkbox" name="sids" value="${s.sid}"></td><td>${i.count}</td><td>${s.sname}</td><td>${s.birthday}</td><td>${s.sex}</td><td>${s.clzame}</td>
    		<!-- 删除这里使用的是异步请求,先将a标签的点击事件取消,在添加自己的单击事件 -->
    		<!-- this代表的是当前的这个a标签,后面可以带参数 -->
    		<td><a href="javaScript:void(0)" onclick="del(this,'${s.sid}')">删除</a></td>
    		<td><a href="selectone?sid=${s.sid}">修改</a></td></tr>
    	</c:forEach>
    </table>
    <p>
    	<!-- 使用的是分页工具类,可以在pagehelper网站工具上查看使用 -->
    	<c:if test="${pageinfo.hasPreviousPage}">
    		<a href="show?pageNum=${pageinfo.pageNum-1}">上一页</a>
    	</c:if>
    	<c:if test="${pageinfo.hasNextPage}">
    		<a href="show?pageNum=${pageinfo.pageNum+1}">下一页</a>
    	</c:if>
    </p>
   </form>

javacript部分代码:
这里用了一个全选的方法来将所有checkbox选项的值改为true实现全选功能
在完成批量删除操作后从controller层传回响应的参数,这里使用param对象来接收参数并作出相应的提示

全选<input type="checkbox" value="" name="selectall">
 <script type="text/javascript">
    
    /*批量选中的效果*/
	$('input:checkbox[name="selectall"]').click(function(){
		if($(this).is(':checked')){
	        $('input:checkbox').each(function(){
	    		$(this).prop("checked",true);
			});
        }else{
           	$('input:checkbox').each(function(){
    			$(this).prop("checked",false);
			});
        }
	});   
    
	/* 在java跳转的时候url中加上参数,在这里用param来接收
                 做响应的操作提示*/
		var param1 = '${param.b}';
		if(param1!=''){
			if(param1==1)
			alert("批量删除成功");
		}
</script>

Controller控制层代码:
在这里将数组传到service层进行批量删除操作,因为在service层可以做事务控制

	/**
	 * 批量删除操作
	 * @param sids:从web层传来的id数组,就是所勾选的数据
	 * @return 跳转的时候根据不同情况加上一个任意参数用于在jsp页面接收
	 */
	@RequestMapping("delall")
	public String deleteall(Integer[] sids){
		if(studentService.deleteAll(sids)){
			return "redirect:/show?b=1";
		}else{
			return "redirect:/show?b=0";
		}
	}

service业务逻辑层代码:
serviceImpl层直接调用dao层的删除方法循环传来的数组进行批量删除就可以,将最终结果在返回给控制层

@Override
	public boolean deleteAll(Integer[] sids) {
		int sum = 0;
		for(Integer id : sids){
			int result = studentDao.delete(id);
			sum += result;
		}
		if(sum==sids.length){
			return true;
		}
		return false;
	}

(参考使用)

更多推荐

Java+Spring框架实现批量删除操作