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

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

此项目基于的框架是: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,相信大家都明白,就不再过多解释了。欢迎大家一起讨论。

如下是当前效果图:

springmvc+mybatis用多选框批量删除的功能Java代码的更多相关文章

  1. 复选框批量删除操作-jquery方式

    1.首先在页面添加一个批量删除的按钮:<li class="btns"><input id="deleteSubmit" class=&quo ...

  2. MVC3学习:利用mvc3+ajax实现全选和批量删除

    本例数据库操作使用EF code first; 先利用mvc自带的模板,先生成一个list视图,然后再手动添加复选框和删除按钮 <table> <tr> @*在标题行添加一个全 ...

  3. php--jquery操作全选、批量删除、加减行

  4. mySql事务_ _Java中怎样实现批量删除操作(Java对数据库进行事务处理)?

      本文是记录Java中实现批量删除操作(Java对数据库进行事务处理),在开始之前先来看下面这样的一个页面图: 上面这张图片显示的是从数据库中查询出的出租信息,信息中进行了分页处理,然后每行的前面提 ...

  5. angularJS批量删除 品优购删除品牌(通用复选框批量选中删除解决思路)

    思路: 一步:在点击复选框时维护变量数组 在js中定义一个数组变量, 给复选框添加点击动作, 在动作中判断当前复选框是否为选中状态(即点击后复选框的是否选中状态), 若为选中状态,则向数组中添加选中的 ...

  6. 关于jquery全选反选 批量删除的一点心得

    废话不多说直接上代码: 下面是jsp页面的html代码: <table id="contentTable" class=""> <thead& ...

  7. jQuery+SpringMVC中的复选框选择与传值

    一.checkbox选择 在jQuery中,选中checkbox通用的两种方式: $("#cb1").attr("checked","checked& ...

  8. AJAX实现弹窗显示详情,全选和批量删除

    以Nation表为例,将Nation表显示在页面上,每一行数据前面加上复选框,后面加上查看详情,点击以弹窗形式显示每一行的数据,并且在表格最后一行加上全选复选框,点击选中全部数据,后面跟一个批量删除按 ...

  9. Ado.net[登录,增删改查,Get传值,全选,不选,批量删除,批量更新]

    [虽然说,开发的时候,我们可以使用各种框架,ado.net作为底层的东西,作为一个合格的程序员,在出问题的时候我们还是要知道如何调试] 一.增删改查 cmd.ExecuteReader();执行查询, ...

随机推荐

  1. 【转】Linux终端下 dstat 监控工具

    转自https://linux.cn/article-3215-1.html dstat 是一个可以取代vmstat,iostat,netstat和ifstat这些命令的多功能产品.dstat克服了这 ...

  2. WebApi多数据库切换

    用抽象工厂来解决多数据库之间的切换问题是普遍的,像以下几篇文章都讲的很具体 申明之前写的存在强大漏洞 -- 之前有涉及到IoC Autofac的知识点,鄙人孤陋寡闻,在亲身实践后才发现其中奥妙可参照一 ...

  3. static之用法

    本文转载于http://www.cnblogs.com/stoneJin/archive/2011/09/21/2183313.html 在C语言中,static的字面意思很容易把我们导入歧途,其实它 ...

  4. jsp include指令

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  5. JS Number对象

    数字属性 MAX_VALUE MIN_VALUE NEGATIVE_INFINITY POSITIVE_INFINITY NaN prototype constructor 数字方法 toExpone ...

  6. Android的ADB配置环境和adb指令使用

    adb的全称为Android Debug Bridge,就是起到调试桥的作用,作为一名开发者倒是常用到这个工具.借助adb工具,我们可以管理设备或手机模拟器的状态.还可以进行很多手机操作,如安装软件. ...

  7. spring4 mvc 出错

    java.lang.IncompatibleClassChangeError: class org.springframework.core.type.classreading.ClassMetada ...

  8. #ASP.NET Core 1.0 Key Features

    Cross platform support and flexible runtime engine(跨平台支持和灵活的运行时引擎) ASP.NET Core 1.0 offers support f ...

  9. HTML5中createPattern()

    定义和用法 createPattern() 方法在指定的方向内重复指定的元素. 元素可以是图片.视频,或者其他 <canvas> 元素. 被重复的元素可用于绘制/填充矩形.圆形或线条等等. ...

  10. header元素

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...