SSM框架如何实现批量删除?

637 阅读1分钟

JSP页面

<table>
 	<tr>
 		<th><input id="all" type="checkbox" /></th>
		<th>标准号</th>
		<th>中文名称</th>
		<th>版本</th>
		<th>发布日期</th>
		<th>实施日期</th>
		<th>操作</th>
	</tr>
	<c:forEach items="${stdList }" var="std">
		<tr>
			<td><input name="id" type="checkbox" value="${std.id }" /></td>
			<td>${std.std_num }</td>
			<td>${std.zhname }</td>
			<td>${std.version }</td>
			<td><fmt:formatDate value="${std.release_date }" pattern="YYYY-MM-dd"/></td>	
			<td><fmt:formatDate value="${std.impl_date }" pattern="YYYY-MM-dd"/></td>	
			<td><a href="${std.package_path }" target="_blank">下载</a>&nbsp;&nbsp;<a href="edit.html?id=${std.id }" >修改</a></td>
		</tr>
	</c:forEach>	
</table>
<button id="del">批量删除</button>
<script type="text/javascript" src="statics/js/jquery-1.12.4.js"></script>
<script type="text/javascript">
            //全选
		var oall=document.getElementById("all");
		var oid=document.getElementsByName("id");
		oall.onclick=function(){
			for(var i=0;i<oid.length;i++){
				//所有的选择框和全选一致
				oid[i].checked=oall.checked;		
			}
		};
		//点击复选框
		for(var i=0;i<oid.length;i++){
			oid[i].onclick=function(){
				//判断是否全部选中,遍历集合
				for(var j=0;j<oid.length;j++){
				  if(oid[j].checked==false){
					oall.checked=false;
					break;
				  }else{
				    oall.checked=true;
				  }
				}
			};
		}
		//点击删除
		$("#del").click(function(){
			var ids="";
			var n=0;
			for(var i=0;i<oid.length;i++){
				if(oid[i].checked==true){//选中为true
					var id=oid[i].value;
					if(n==0){
						ids+="ids="+id;
					}else{
						ids+="&ids="+id;
					}
					n++;
				}			
			}
            //上面会拼接出一个名为ids的数组ids=1&ids=2&ids=3&ids=4……
			$.get("del.html",ids,function(data){
				if(data=="\"ok\""){
					alert("删除成功!");
					//删除成功后,调用action方法刷新页面信息
					location.href="findAllStandardList.html";
				}else{
					alert("删除失败!");
				}
			});
		});
</script> 

controller控制器

//删除功能
	@RequestMapping(value="/del.html")
	@ResponseBody
	public String delStansard(Integer[] ids){ //传过来的是一个名叫ids的数组
		try {
			//批量删除
			standardBiz.delStandardInfo(ids);//删除的方法
		} catch (Exception e) {
			// TODO: handle exception
			return "error";
		}
		return "ok";
	}

MyBatis中批量删除的sql语句

	<delete id="delUserById">
	DELETE FROM `USER` WHERE id in
	<foreach collection="array" item="ids" open="(" separator="," close=")">
	<!-- collection表示类型,数组是array,集合是List,item 是一个变量名,open表示左括号,separator是逗号,close是右括号 -->
			#{ids}
		</foreach>
	</delete>