在springmvc和mybatis框架下根据id批量删除

jsp页面代码:

 <input type="checkbox" id="subcheck" name="subcheck" class="checkboxes" value="${teacher.id}" />

js代码:

 function batchDeletes(){
        var checkedNum = $("input[name = 'subcheck']:checked").length;
        if(checkedNum == 0) {
            alert("请至少选中一项!");
            return false;
        }
        if(confirm("确定删除所选项目?")){
            var checkedList = new Array();
            $("input[name = 'subcheck']:checked").each(function (){
                checkedList.push($(this).val());
            });
            $.ajax({
                type: "POST",
                url: "rest/teacher/batchDeletes.action",
                data: {"ids": checkedList.toString()},
                datatype: "html",
                success: function (data) {
                    $("[name=‘checkbox‘]:checkbox").attr("checked", false);
                    art.dialog.tips('删除成功!');
                    setTimeout("location.reload()", 1000);//页面刷新
                },
                error:function(data){
                    art.dialog.tips('删除失败!');
                }
            });
        }
    }

controller代码:

 @RequestMapping("/batchDeletes")
    public void batchDeletes(HttpServletRequest request){
        System.out.println(1);
        String items = request.getParameter("ids");
        List<String> delList = new ArrayList<String>();
        String[] strs = items.split(",");
        System.out.println(2);
        for (String str : strs) {
            delList.add(str);
        }
        basicTeacherService.batchDeletes(delList);
    }

mapper.xml页面代码:

 <delete id="batchDeletes" parameterType="java.lang.Long">
    delete from basic_teacher where id in
    <foreach collection="list" index="index" item="id" open="(" separator="," close=")">
      #{id}
    </foreach>
  </delete>

麻烦各路大神给看看到底是哪里出了问题哈,谢谢

大概看了一下,个人认为应该是传值的问题,你在javascript中传递的内容是一个Array,并不是一个字符串,对人那你最后使用toString转换了,但是在你的controller中使用,为分割标准来分割,因此我建议你在javascript中这样写:

                        var checked = "";
            $("input[name = 'subcheck']:checked").each(function (){
                checked += $(this).val() + ",";
            });
            $.ajax({
                type: "POST",
                url: "rest/teacher/batchDeletes.action",
                data: {"ids": checked},
                datatype: "html",
                success: function (data) {
                    $("[name=‘checkbox‘]:checkbox").attr("checked", false);
                    art.dialog.tips('删除成功!');
                    setTimeout("location.reload()", 1000);//页面刷新
                },
                error:function(data){
                    art.dialog.tips('删除失败!');
                }
            });

这个方法在controller中可能还会有一个问题,那么就是最后一个,后面没有内容了,因此分割之后,最后一个元素无效

运行了是报了什么错呢,ajax里面返回的data里面有值么。说的清楚点啊

你的basicTeacherService.batchDeletes(delList);这个方法传的参数类型是String集合,
而你的mapper.xml配置里却是parameterType="java.lang.Long",把这个改成String试试