java.多选框批量删除功能(springmvc+mybatis
2018-08-02 本文已影响308人
InitialX
`搬运自:https://blog.csdn.net/happyboy214117/article/details/47753489
感谢原作者
此项目基于的框架是:springmvc+mybatis
(1)controller
/**
* 批量删除 batch
*/
@RequestMapping("/batchDeletes")
@ResponseBody
public void batchDeletes(HttpServletRequest request,HttpServletResponse response){
String items = request.getParameter("delitems");
List<String> delList = new ArrayList<String>();
String[] strs = items.split(",");
for (String str : strs) {
delList.add(str);
}
userService.batchDeletes(delList);
}
代码思路:
从前台勾选的选择框中传过来的值用“,”分开,然后遍历存放到delList集合里面,直接删delList集合里面的所有字符串。
(2)service
/**
* 批量删除
*/
void batchDeletes(List delList);
(3)impl
/**
* 批量删除
*/
@Override
public void batchDeletes(List delList) {
userMapper.batchDeletes(delList);
}
(4)mapper
/**
* 批量删除
*/
void batchDeletes(List delList);
(5)mapper.xml
<!--批量删除 -->
<delete id="batchDeletes" parameterType="java.util.List">
DELETE FROM tp_user where uname in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
如上的mybatis指代的意思如下:
foreach元素的属性主要有 item,index,collection,open,separator,close。
item表示集合中每一个元素进行迭代时的别名. (直接找到对应的delList集合里面的所有元素,item="item"中的item(后一个)必须与#{item} 中的item一致)
index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置.
open表示该语句以什么开始,separator表示在每次进行迭代之间以什么符号作为分隔 符.
close表示以什么结束.
前台代码:
user_list.jsp
<table class="tb_list">
<tr>
<td align="center"><input type="checkbox" id="SelectAll"
onclick="selectAll();" /> 全选</td>
<th>序号</th>
</tr>
<c:forEach items="${page.list }" var="items" varStatus="idx">
<tr class="row_${idx.count%2+1}">
<td style="display:none">${batch.id}</td>
<td align="center"><input type="checkbox" id="subcheck"
name="subcheck" value="${items.UNAME }" />
</td>
<td>${page.onePageCount*(page.currentPage-1)+idx.count }</td>
<tr>
</table>
<button class="btn btn-primary btn-md" type="button"
id="deleteButton">删除</button>
//全选
function selectAll(){
if ($("#SelectAll").is(":checked")) {
$(":checkbox").prop("checked", true);//所有选择框都选中
} else {
$(":checkbox").prop("checked", false);
}
}
//批量删除
$("#deleteButton").on("click", function() {
//判断至少写了一项
var checkedNum = $("input[name='check']:checked").length;
if (checkedNum == 0) {
layer.alert("请至少选择一项!");
return false;
}
var checkedList = new Array();
$("input[name='check']:checked").each(function() {
checkedList.push($(this).val());
});
layer.confirm('确定删除所选项目?', {
title : '提示'
}, function(index) {
$("body").mLoading('show'); //加遮罩
$.ajax({
type : "POST",
url : '${ctx}/manage/banner/delete',
data : {
"delitems" : checkedList.toString()
},
datatype : "html",
success : function(data) {
$(":checkbox").attr("checked", false);
layer.close();
window.location.reload();
},
error : function(data) {
art.dialog.tips('删除失败!');
}
});
});
})
引入的js
<script src="${ctx}/static/js/jquery.min.js?v=2.1.4"></script>
<script src="${ctx}/static/js/bootstrap.min.js?v=3.3.6"></script>
<script src="${ctx}/static/js/plugins/layer/layer.min.js"></script>
<script src="${ctx}/static/js/plugins/mloading/jquery.mloading.js"></script>
备注:此代码我传值的主键是用uname来删除的,实际应该用id作为主键,因为id的[unique],uname若重名,则就会出现bug,相信大家都明白,就不再过多解释了。欢迎大家一起讨论。