如何实现springmvc+mybatis用多选框批量删除的功能Java代码

        今天写了一个批量删除的功能,在后台传值过程中一直出错,最终还是请教了北京的一位高手帮我解决的,在此首先要好好感谢他,以后我有幸能帮助别人的话,决不推辞。

废话不说,直接进入正题,我会将在编写过程中出现的一些小知识点也进行总结概括的。

此项目基于的框架是:springmvc+mybatis

(1)controller

/**
     * 批量删除 batch
     */
    @RequestMapping("/batchDeletes")
    @ResponseBody
    public void batchDeletes(HttpServletRequest request,HttpServletResponse response){
        String items = request.getParameter("delitems");
        List delList = new ArrayList();
        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 FROM tp_user where uname in
           
            #{item}   
        

    

如上的mybatis指代的意思如下:

foreach元素的属性主要有 item,index,collection,open,separator,close。

item表示集合中每一个元素进行迭代时的别名.  (直接找到对应的delList集合里面的所有元素,item="item"中的item(后一个)必须与#{item}   中的item一致)

index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置.

open表示该语句以什么开始,separator表示在每次进行迭代之间以什么符号作为分隔 符.

close表示以什么结束.


前台代码:

user_list.jsp


       //全选
    
        function selectAll(){
            if ($("#SelectAll").is(":checked")) {
                $(":checkbox").prop("checked", true);//所有选择框都选中
            } else {
                $(":checkbox").prop("checked", false);
            }
        }
        
        //批量删除
        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:"web/user/batchDeletes.action",
                    data:{"delitems":checkedList.toString()},
                    datatype:"html",
                    success:function(data){
                        $("[name='checkbox2']:checkbox").attr("checked",false);
                        art.dialog.tips('删除成功!');
                        setTimeout("location.reload()",1000);//页面刷新
                    },
                    error:function(data){
                        art.dialog.tips('删除失败!');
                    }
                });
                }
        }


                
                    
                    
                   
                
                
                    

                        
                        
                        
                      
            
                                οnclick="selectAll();" /> 全选序号
${batch.id}                                     name="subcheck" value="${items.UNAME }" />
                        
${page.onePageCount*(page.currentPage-1)+idx.count }

备注:此代码我传值的主键是用uname来删除的,实际应该用id作为主键,因为id的unique

,uname若重名,则就会出现bug,相信大家都明白,就不再过多解释了。欢迎大家一起讨论。

如下是当前效果图:


你可能感兴趣的:(如何实现springmvc+mybatis用多选框批量删除的功能Java代码)