效果展示图:
代码部分:
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框架实现批量删除操作
发布评论