• springmvc+mybatis用多选框批量删除的功能Java代码


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

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

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

    (1)controller

    /**
         * 批量删除 batch
         */
        @RequestMapping("/batchDeletes")
        @ResponseBody
        public void batchDeletes(HttpServletRequest request,HttpServletResponse response){
            String items = request.getParameter("delitems");
            List<String> delList = new ArrayList<String>();
            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 id="batchDeletes" parameterType="java.util.List">
                DELETE FROM tp_user where uname in
            <foreach collection="list" index="index" item="item" open="(" separator="," close=")">   
                #{item}   
             </foreach>
        </delete>

    如上的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('删除失败!');
                        }
                    });
                    }
            }

    <table class="tb_list">
                    <tr>
                        <td align="center"><input type="checkbox" id="SelectAll"
                                    onclick="selectAll();" /> 全选</td>
                        <th>序号</th>
                       
                    </tr>
                    <c:forEach items="${page.list }" var="items" varStatus="idx">
                        <tr class="row_${idx.count%2+1}">
                            <td style="display:none">${batch.id}</td>
                            <td align="center"><input type="checkbox" id="subcheck"
                                        name="subcheck" value="${items.UNAME }" />
                            </td>
                            <td>${page.onePageCount*(page.currentPage-1)+idx.count }</td>
                         <tr> 
                </table>

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

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

    如下是当前效果图:

  • 相关阅读:
    计算机网络
    计算机网络知识总结
    final,static,super,this
    ArrayList
    基础面试题
    BATJ都爱问的多线程面试题
    Session过期、失效时间
    类加载器ClassLoader源码解析
    连接ftp服务器 JDK 1.7
    根据当前请求的特征,判断该请求是否来自手机终端
  • 原文地址:https://www.cnblogs.com/zhoushihui/p/5086829.html
Copyright © 2020-2023  润新知