学习笔记*批量批量删除功能的实现

学习笔记*批量批量删除功能的实现


前言:该实现思路基于使用C3P0Util数据库连接方式。


----------------jsp的原来表单中最前添加一列--------
    如:<td style="cursor:hand"; width="10%"; align="center">     在目录列表列
              <input type="checkbox" id="ckAll" onclick="checkAll()" />
        </td>

     <c:forEach items="${books }" var="b">

        <td style="cursor:hand"; width="10%"; align="center">      在显示数据列
              <input type="checkbox" name="ids" value="${b.id }" />

        </td>

    </c>


----------------js实现选择功能思路--------

    1、使用点击事件调用checkAll()

    2、方法中要做什么事?
         获得chAll元素,得到他的选中状态
         获得所有复选框的元素ids
         循环每一个复选框,并给其赋值(即ckAll的选中状态值)


----------------js实现功能过程--------

   如://全选/全不选
       function checkAll(){
           //得到ckAll元素,并得到它的选中状态
           var flag = document.getElementById("ckAll").checked;
           //得到所有的ids复选框元素
           var ids = document.getElementByName("ids");
           //循环给每一个复选框赋值
           for(var i=0; i<ids.length; i++){
               ids[i].checked = flag;   //把ckAll元素的状态赋值给每一个ids[i]的元素
           }
       }

----------------批量删除功能实现--------
   步骤:
       1、jsp表单页面中添加一个按钮(值为:批量删除),代码如下:
          
          <button type="button" id="del" name="del" value="批量删除" onclick="delAllBooks()">批量删除
               
          </button>


       2、js文件中实现delAllBooks()方法
          //批量删除
          function delAllBooks(){
             //得到所有复选框的元素
             var ids = document.getElementsByName("ids");
             var str=""; 
             //循环得到选中的复选框的id
             for(var i=0; i<ids.length; i++){
                if(ids[i].checked){
                    str+="ids="+ids[i].value+"&";  //获取选中的id的值全都传给delAllBooksServlet
                }
             }
              str = str.substring(0, str.length-1);   //截取所有的字符串再次赋值给str,效果为:ids=1001&ids=1002&ids=1003
            
              if(str != "")
                   location.href="${pageContext.request.contextPath }/delAllBooksServlet?"+str;
          }

       3、处理批量删除,新建一个服务类DelAllBooksServlet,代码如下:

          //得到所有的id
          String[] ids = request.getParameterValues("ids");   //ids为表单复选框的名称,实际上是关联id
          //调用删除业务
         BookServiceImpl bs = new BookServiceImpl();
         bs.deleAllBooks(ids);
          //分发转向
          //使用的是相对路径
         request.getRequestDispatcher("bookListServlet").forward(request, response);

       4、处理服务层,在业务层新建一个方法deleAllBooks,调用数据访问层的删除方法deleAllBooks(),代码如下:
          
          public void deleAllBooks(String[] ids){
               bookDao.deleAllBooks(ids);
          }

       5、处理业务层,在数据访问层新建一个方法deleAllBooks,具体实现删除方法deleAllBooks(),代码如下:

          //批量删除
          public void deleAllBooks(String[] ids){
               QueryRunner qr = new QueryRunner(C3P0Util.getDataSource());
               Object[][] params = new Object[ids.length][];
               for(int i=0; i<params.length; i++){
                   params[i] = new Object[]{ids[i]}; //循环给每一个一维数组中的元素赋值,值是id
               }               
               String sql = "delete from book where id=?";
               qr.batch(sql, params);
          }

猜你喜欢

转载自blog.csdn.net/PGY0000/article/details/80021952