批量删除实现
昨天我们实现了添加登录权限功能,今天要在管理员登录的情况下实现用户的批量删除。
先来了解下AJAX
AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。即使用Javascript语言与服务器进行异步交互,AJAX还有一个最大的特点就是,当服务器响应时,不用刷新整个浏览器页面,而是可以局部刷新。
它包括:
- 与服务器的异步交互
- 浏览器的局部刷新
我们批量删除的代码如下:
function deleteAll() {
var checkNum=$("input[name='ids']:checked").length;
if(checkNum==0){
alert("请至少选择一项");
return;
}
if(confirm("确定要删除吗?")){
var userList = new Array();
$("input[name='ids']:checked").each(function () {
userList.push($(this).val())
});
}
$.ajax({
type:"post",
url:"${pageContext.request.contextPath}/user/deleteAll.do",
data:{userList:userList.toString()},
success:function () {
alert("删除成功");
location.reload();
},
error :function () {
alert("删除失败");
}
})
}
</script>
然后是Controller层
@RequestMapping("deleteAll.do")
public String deleteAll(String userList){
String[] strs = userList.split(",");
List<Integer> ids = new ArrayList<>();
for(int i = 0; i < strs.length; i++) {
ids.add(Integer.parseInt(strs[i]));
}
userInfoService.deleteAll(ids);
return "";
}
注意,返回空字符串是因为不需要改变页面。
**最后我们使用Mybatis动态SQL的foreach对一个id集合进行遍历,**可以将任何可迭代对象(如 List、Set 等)、Map 对象或者数组对象传递给 foreach 作为集合参数。当使用可迭代对象或者数组时,index 是当前迭代的次数,item 的值是本次迭代获取的元素,"open"是循环开始位置,“separator”是分隔符标志,“close”是结束标志。
<delete id="deleteAll" parameterType="list">
delete from userinfo where id in
<foreach collection="list" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
结果图略