layui+ssm实现批量删除

这里的批量删除依然指的是假删除,将被删除数据设置为无效即可

前端代码

//批量删除前端
    $(".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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值