这里的批量删除依然指的是假删除,将被删除数据设置为无效即可
前端代码
//批量删除前端
$(".delAll_btn").click(function(){
//该方法可获取到表格所有的选中行相关数据
var checkStatus = table.checkStatus('newsListTable'),
data = checkStatus.data,
//造一个数组存放选中数据的id
ids = [];
if(data.length > 0) {
for (var i in data) {
ids.push(data[i].id);
}
layer.confirm('确定删除选中的文章?', {icon: 3, title: '提示信息'}, function (index) {
$.ajax({
type:"post",
url:"/student/deletedisp",
//注意!通过json传输时需设置contentType并且传一个字符串(JSON.stringfy)
data:JSON.stringify(ids),
contentType:"application/json",
success: function (data) {
layer.msg(data.msg);
tableIns.reload({
//重新加载时的回调
done:function(res, curr, count){
//注意避免整页删除后仍停留在空白页的情况,再次重载表格,回退到上一页
if(res.data.length==0){
curr=curr-1;
tableIns.reload({
page:{
curr:curr
}
})
}
}
})
layer.close(index);
}
})
})
}else{
layer.msg("请选择需要删除的文章");
}
})
后端Controller代码
/*批量删除学生*/
@RequestMapping("/deletedisp")
@ResponseBody
//注意此处,前台传来的是json对象时参数列表需要使用@RequestBody注解
public ResultObject deletedisp(@RequestBody ArrayList<Integer> ids){
ResultObject object = studentService.deleteDisp(ids);
return object;
}
Service层代码
/*删除单个byid*/
@Override
public ResultObject delete(Integer id) {
Student student = new Student();
student.setId(id);
student.setFlag(SystemDescription.CODECURDFAIL);
int i = studentDao.updateByPrimaryKeySelective(student);
String msg=i==0?SystemDescription.DELETEFAIL:SystemDescription.DELETEOK;
ResultObject resultObject = new ResultObject(i, msg);
return resultObject;
}
/*批量删除学生*/
@Override
public ResultObject deleteDisp(ArrayList<Integer> ids) {
int flag=SystemDescription.CODECURDOK;
for (Integer id:ids) {
ResultObject deleteitem = delete(id);
if(deleteitem.getCode()==SystemDescription.CODECURDFAIL){
flag=SystemDescription.CODECURDFAIL;
}
}
String msg=flag==0?SystemDescription.DELETEDISPFAIL:SystemDescription.DELETEDISPOK;
ResultObject resultObject = new ResultObject(flag,msg);
return resultObject;
}
这里的批量删除调用了删除by id的方法,从数组中依次取出id并调用方法即可,批量删除还有一个问题就是可能在删除多个时出现错误,由于本身作用为删除,故不必要配置事务让其作为整体,在此设置了如果中途有一个出现错误就返回批量删除失败的错误信息,但是删除成功的部分不再进行回滚。
小拓展
(不同数据格式请求的接收方式):
- 数组
非JSON请求
前台
localhost:8080/demo3?ids=1&ids=2&ids=3
后台
@ResponseBody
@RequestMapping("demo3")
public Long[] demo3(Long[] ids){
System.out.println("ids:"+ids.length);
return ids;
}
JSON请求
前台
localhost:8080/demo33
//请求头
Content-Type:application/json
//请求体
[1,2,3]
后台
@ResponseBody
@RequestMapping("demo33")
public Long[] demo33(@RequestBody Long[] ids){
System.out.println("ids:"+ids.length);
return ids;
}
- 集合List
非JSON请求
前台
localhost:8080/demo4?idList=1&idList=2
后台(@RequestParam注解不可缺少,否则不能识别java特殊集合)
@ResponseBody
@RequestMapping("demo4")
public List<Long> demo4(@RequestParam List<Long> idList){
System.out.println("ids:"+idList);
return idList;
}
JSON请求
前台
localhost:8080/demo5
===========headers==============
Content-Type:application/json
============body==============
[1,2,3]
后台(同数组类似)
@ResponseBody
@RequestMapping("demo5")
public List<Long> demo5(@RequestBody List<Long> idList){
System.out.println("ids:"+idList);
return idList;
}